背景
qiankun项目用的是Vue2+Antdesign2,但其中一个子应用用的是Vue3+Antdesign4。集成之后发现子应用的样式混乱,渲染的是Antdesign2的样式。
解决
以下步骤在子应用里操作
1. 在main.js引入ConfigProvider ,在app全局注册ConfigProvider
import { ConfigProvider } from 'ant-design-vue';// Ant Design Vue 的 Message 组件(以及 Notification、Modal、Drawer 等)的行为与其他组件略有不同,因为它们是通过 JavaScript 动态生成并附加到 DOM 中的,而不是通过组件树直接渲染。这意味着,这些组件不会自动继承 ConfigProvider 的配置,包括自定义的样式前缀。
// 确保 message 等组件也能应用自定义的样式前缀
ConfigProvider.config({prefixCls: 'projectKeyXXX',getPopupContainer: () => document.body,
});let app = createApp(App)
app.component(ConfigProvider.name, ConfigProvider);
2. App.vue里用ConfigProvider包住,定义前缀(前缀需与在main.js定义的前缀保持一致)
<template><a-config-provider prefixCls="projectKeyXXX"><router-view /></a-config-provider>
</template>
3. 在自己项目重新Antdesign样式的名字全部都要把"ant-"改成"projectKeyXXX",例如:
.projectKeyXXX-table-striped {background-color: #fafafa;
}
因为Antdesign的样式名字已经全部改成projectKeyXXX了,所以要注意在子应用里所有关于Antdesign的样式前缀都需要改。
相关文档参考
全局化配置 ConfigProvider - Ant Design Vue (antdv.com)