React中使用Antd 4.x組件庫時,如何按需加載

阿里的react組件庫Antd,默認情況下:組件的js是支持按需引入,但css并不支持按需引入,即默認情況下Antd的CSS樣式被整體引入,但開發(fā)中為了減少打包的體積,我們通常需要自己設置來讓css也支持按需引入

方案一:手動引入要使用的組件css樣式,例如引入Antd組件庫的input組件

// 引入 Input 組件
import 'antd/es/input/style/css'; // 手動按需引入input樣式
import { Input } from 'antd'; // 引入 Input 模塊(注意這里是自動按需引入的,不會將整個antd.js文件引入)
  • 如上所述,每使用一個組件,就需要引入該組件需要的js和css,實在有些麻煩,那有沒有什么辦法,讓引入模塊后,自動按需引入對應的css樣式呢

方案二:使用bable-plugin-import插件,實現(xiàn)自動引入要使用的組件的css樣式

  • 使用webpack里配置babel-plugin-import,便可實現(xiàn)在webpack打包時,自動引入打包模塊按需引入,并且將相關聯(lián)的css樣式也按需引入,但因為官方react腳手架默認隱藏了webpack配置,所以我們需要react-app-rewired和customize-cra來開啟react的webpakc配置

    1. NPM安裝插件
    # 安裝插件 react-app-rewired customize-cra babel-plugin-import 這3個插件
    npm install react-app-rewired customize-cra babel-plugin-import -D
    
    1. 在項目根目錄下,新建文件config-overrides.js,并設配置其內(nèi)容
    // 項目根目錄下,新增文件 config-overrides.js
    const { override, fixBabelImports } = require('customize-cra');
    
    module.exports = override(
    fixBabelImports('import', {
      libraryName: 'antd',
      libraryDirectory: 'es',
      style: 'css',
    }),
    );
    
    1. 修改根目錄下package.json文件
    // 找到 "scripts" 屬性,并修改其屬性值(將原來的 react-scripts 改為 react-app-rewired )
    "scripts": {
      "start": "react-app-rewired start",
      "build": "react-app-rewired build",
      "test": "react-app-rewired test",
      "eject": "react-scripts eject"
    },
    
    1. 至此,react中支持了antd組件庫的自動按需引入,如下
    // 引入 Input 組件
    import { Input } from 'antd'; // 直接引入模塊即可(樣式和模塊,都會自動按需引入)
    
    • 當然自動按需引入還有其他方案,比如也使用npm run eject直接反編譯react,讓其webpack配置暴露出來
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容