關(guān)于react+antd樣式不生效問題的解決方式
1、添加antd組件樣式不生效
在入口文件中引入import 'antd/dist/antd.css' 樣式生效,但是生成警告 WARNING in ./node_modules/antd/dist/antd.css Failed to parse source map: 'webpack://antd/./components/time- picker/style/index.less' URL is not supported 這樣就需要在webpack中配置,react項目默認的配置文件是不顯示的,需要運行指令“yarn eject”暴露配置文件 運行時又遇到問題2 解決完問題2后 解決1的方法是在webpack.config.dev.js和webpack.config.prod.js文件添加相關(guān)配置,然后引入antd.less 暴露出webpack配置后,在webpack.config.js 中更改配置如下 // style files regexes const cssRegex = /\.(css|less)$/;//此行為更改行?。。。。。。。。? const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; const hasJsxRuntime = (() => { if (process.env.DISABLE_NEW_JSX_TRANSFORM === 'true') { return false; } try { require.resolve('react/jsx-runtime'); return true; } catch (e) { return false; } })(); // This is the production and development configuration. // It is focused on developer experience, fast rebuilds, and a minimal bundle. module.exports = function (webpackEnv) { const isEnvDevelopment = webpackEnv === 'development'; const isEnvProduction = webpackEnv === 'production'; // Variable used for enabling profiling in Production // passed into alias object. Uses a flag if passed into the build command const isEnvProductionProfile = isEnvProduction && process.argv.includes('--profile'); // We will provide `paths.publicUrlOrPath` to our app // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript. // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz. // Get environment variables to inject into our app. const env = getClientEnvironment(paths.publicUrlOrPath.slice(0, -1)); const shouldUseReactRefresh = env.raw.FAST_REFRESH; // common function to get style loaders const getStyleLoaders = (cssOptions, preProcessor) => { const loaders = [ isEnvDevelopment && require.resolve('style-loader'), isEnvProduction && { loader: MiniCssExtractPlugin.loader, // css is located in `static/css`, use '../../' to locate index.html folder // in production `paths.publicUrlOrPath` can be a relative path options: paths.publicUrlOrPath.startsWith('.') ? { publicPath: '../../' } : {}, }, { loader: require.resolve('css-loader'), options: cssOptions, }, //此{}為添加行?。。。。。。。。。。。。。。。。。?! { loader:'less-loader', options:{ javascriptEnabled: true } },
運行代碼,后又遇到報錯看問題3
報錯:Less Loader has been initialized using an options object that does not match the API schema
2、運行yarn eject時暴露配置文件報錯
This git repository has untracked files or uncommitted changes: .DS_Store
git add . git commit -am "Save before ejecting" 然后再運行就可以了
這樣的webpack文件中就有了
3、less-loader版本過高,刪除舊版本,下載低版本即可
yarn remove less-loader yarn add less-loader@4.0.1
再運行,代碼成功運行
4、項目中引入icon代碼報錯
export 'Icon' (imported as 'Icon') was not found in 'antd'
Ant Design 從 v3 升級到 v4 導致
圖標升級(點擊可查看文檔),舊版 Icon 使用方式將被廢棄,你將仍然可以通過兼容包繼續(xù)使用:
import { Icon } from '@ant-design/compatible'; 運行時如果沒有安裝包,運行指令 yarn add @ant-design/compatible 再重新運行代碼就可以了
補充:React中antd按需加載樣式不生效解決辦法
按照antd官網(wǎng)文檔,執(zhí)行按需加載操作后,樣式不生效,很可能是因為在webpack.config.js文件中設置了css模塊化;
解決辦法:
在終端中執(zhí)行
npm run eject
彈出config文件夾后,找到webpack.config.js文件
{ test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1,//在這行后面添加 modules:false modules:false, sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment, }),
總結(jié)
到此這篇關(guān)于react+antd樣式不生效問題的解決方式的文章就介紹到這了,更多相關(guān)react+antd樣式不生效解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React Native時間轉(zhuǎn)換格式工具類分享
這篇文章主要為大家分享了React Native時間轉(zhuǎn)換格式工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10解決React報錯Property value does not exist&n
這篇文章主要為大家介紹了React報錯Property value does not exist on type HTMLElement解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12react中value與defaultValue的區(qū)別及說明
這篇文章主要介紹了react中value與defaultValue的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05React Native按鈕Touchable系列組件使用教程示例
這篇文章主要為大家介紹了React Native按鈕Touchable系列組件使用教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11