antd 样式隔离实现
前端项目的组件库都使用的是 And Design,当一个系统作为另一个系统的子应用时,antd 样式嵌套会出现莫名的样式问题,以及一些在 global 中声明的 antd 样式,会全局污染。基于这种现状,我们需要一个方式将系统之间的 antd 样式进行隔离。
好了,我们看下如何实现,以及实现后带来的一些并发问题如何解决吧。
前置知识点
首先为了统一管理和维护,首先我们将要修改的 antd prefixCls 变量维护在 defaultSettings 文件中,defaultSettings 文件的作用是维护一些系统的基础配置。
-
/**
-
* @file defaultSettings
-
*/
-
export const prefix = 'ant-r';
一、修改 dom 元素上的 class 名称
使用 antd 的 ConfigProvider 全局化配置,将 prefixCls 默认值 ant 修改为 ant-r,注意:只需在应用外围包裹一次即可全局生效
-
import { ConfigProvider } from 'antd';
-
import { prefix } from '../../../config/defaultSettings';
-
-
export default () => (
-
<ConfigProvider prefixCls={`${prefix}`}>
-
<App />
-
</ConfigProvider>
-
);
二、修改 antd 的 css 前缀
将 antd css 前缀默认值 ant 改为 ant-r,如果是 umi 项目的话直接在 config 的 theme 属性 中配置即可
-
/**
-
* @file theme
-
*/
-
const { prefix } = require('../config/defaultSettings');
-
const theme = {
-
'ant-prefix': prefix,
-
-
};
-
module.exports = theme;
-
-
/**
-
* @file config
-
*/
-
import theme from '../theme';
-
const { prefix } = require('../config/defaultSettings');
-
export default defineConfig({
-
theme,
-
antd: {
-
config: {
-
prefixCls: prefix, # 修改HTML里面的类名前缀
-
},
-
},
-
lessLoader: { modifyVars: { '@ant-prefix': prefix } }, # 对应修改生成的 antd 样式类名
-
});
参考:https://juejin.cn/post/7018008695237771277
三、如何在 css module 中 :global 重写 antd 样式
正确写法
问题 1:Modal.method() 无法展示弹窗。
解决方案:产生原因就不说了,antd 的 FAQ 有说明,感兴趣的可以看看。我们看下如何解决,在应用的入口处添加下方代码:
添加后我们发现 modal 可以正常弹出了。
notification 相似:
问题 2:DefaultFooter 组件的 css 名称不对,导致样式没有加载
解决方案:用 GlobalFooter 代替 DefaultFooter,代码如下:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkkgkh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22