使用vite-react-ts和less,修改prefix作用主要就是乾坤项目antd版本不同导致样式冲突
pnpm add antd
pnpm add less -D
import { defineConfig, loadEnv } from 'vite'
export default ({ mode }) => {
css: {
preprocessorOptions: {
less: {
modifyVars: {
'ant-prefix': 'my-prefix',// ant-prefix是antd库中less样式文件定义的动态前缀,@antd-prefix:'ant';
},
// 支持内联 JavaScript
javascriptEnabled: true,
},
module: true,
},
},
})
在main.tsx中引入antd的less样式文件,同时配置ConfigProvider 的 prefixCls,prefixCls值需要和vite.config.ts文件配置的ant-prefix的值相同
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";
import 'antd/dist/antd.less'
import { ConfigProvider, message, notification } from 'antd'
// 脱离文档流的组件修改 主要是 message、notification、Modal,message和notification比较特殊,有独特的后缀
message.config({
prefixCls: 'my-prefix-message',
})
notification.config({
prefixCls: 'my-prefix-notification',
})
// 配置Modal
ConfigProvider.config({
prefixCls: 'my-prefix',
})
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<ConfigProvider prefixCls="my-prefix">
<App />
</ConfigProvider>
</React.StrictMode>
);
没有使用动态参数,需要将ant 改成 ant-prefix
// 修改前
.ant-tabs{}
// 修改后
.my-prefix-tabs{}
使用动态参数会自动替换
// 动态参数
.@{ant-prefix}-tabs{}