解决React中通过外部引入的css/scss/less文件更改antDesign中Modal组件内部的样式不生效问题
不生效原因
Ant Design 的 Modal 默认通过
ReactDOM.createPortal
挂在<body>
下,与你的组件树平级,所以写在.module.css
/scoped less
里的选择器根本匹配不到它,就算写全局样式,也可能因为权重不足或异步挂载时机而“看不见”解决方案
先通过getContainer
把 Modal 拉进自己的 DOM 范围,再给它一个wrapClassName
,用高权重选择器随便改
让 Modal 挂到你自己的节点里(关键)
const wrapperRef = useRef(null);<div ref={wrapperRef}><ModalgetContainer={() => wrapperRef.current} // ← 挂进来wrapClassName="my-modal-wrap" // ← 给外层一个类名...>...</Modal>
</div>
用高权重选择器写样式(别吝啬 !important
)
/* 普通 CSS / less / sass 均可 */
.my-modal-wrap .ant-modal {color: red !important;
}
注:本人前端小白 ,如有不对的地方还请多多指教