当前位置: 首页 > news >正文

React UI框架Antd 以及 如何按需引入css样式配置(以及过程中各种错误处理方案)

一、react UI框架Antd使用

1.下载模块

npm install antd -S

2.引入antd的样式

@import '../node_modules/antd/dist/reset.css';

3.局部使用antd组件

import {Button, Calendar} from 'antd';
import {PieChartTwoTone} from '@ant-design/icons';
{/* 组件汉化配置 */}
import locale from 'antd/lib/calendar/locale/zh_CN';
<Calendar locale={locale} cellRender={ cellRender } />
<Button>antd按钮-默认</Button>
<Button type='primary'>antd按钮-主要</Button>
<Button type='primary' danger>antd按钮-危险</Button>
{/* 内嵌样式直接修改 */}
<Button type='dashed' danger style={{border:'1px dashed #78bd70'}} >antd按钮-dashed危险</Button>
<Button type='link' danger >antd按钮-link危险</Button>
<Button type='text' danger >antd按钮-text危险</Button>
<PieChartTwoTone twoToneColor="#eb2f96" spin={true} style={{fontSize:'50px'}}/>// 在index.js中配置汉化语音包
// 汉化 语言包 4.0
npm install moment -S
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-cn');
// 汉化 语言包 5.0
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
dayjs.locale('zh-cn');

4.对应项目模块版本

node18.0.0

antd5.14.2 

二、antd如何按需引入css样式以及配置

原因:上面是加载了全部的antd样式,对前端性能有隐患,所以需要antd按需引入css样式配置

1.下载指定版本插件

yarn add react-app-rewired@2.0.2-next.0

2.由于上一步可能会报下面的错,需要修改node版本,更改node版本为14.15.0或16.10.0或>=18.0.0才可以下载react-app-rewired指定模块插件

3.package.json文件修改,将react-script改为react-app-rewired

"scripts": {"start": "react-app-rewired start","build": "react-app-rewired build","test": "react-app-rewired test --env=jsdom","eject": "react-app-rewired eject"// "start": "react-scripts start",// "build": "react-scripts build",// "test": "react-scripts test",// "eject": "react-scripts eject"}

4.在项目根目录创建config-overvides.js文件用来修改默认配置

module.exports = function override(config, env) {// 使用 webpack 配置做一些事情...return config;
};

5.安装插件

yarn add babel-plugin-import// 是一个用于按需加载组件代码和样式的babel插件
yarn add customize-cra -S
yarn add less@3.11.1 less-loader@5 -S

6.修改config-overvides.js文件为下面代码

const { override, fixBabelImports, addLessLoader } = require('customize-cra');
module.exports = override(// 针对antd 实现按需打包:根据import来打包 (使用babel-plugin-import)fixBabelImports('import',{libraryName:'antd',libraryDirectory:'es',style:true,//自动打包相关的样式 默认为 style:'css'}),// 使用less-loader对源码重的less的变量进行重新制定,设置antd自定义主题addLessLoader({javascriptEnabled: true,modifyVars:{'@primary-color':'#1DA57A'},})
);

7.注释掉以下的配置,这时候直接引入组件就有对应的css,无需全局引入

@import '../node_modules/antd/dist/reset.css';

 8.重新启动项目

npm start

三、启动时的报错 以及 启动成功后代码中的一些报错以及解决方案

1.代码中报错

Parsing error: Unexpected token <eslint

Parsing error: Unexpected token =eslint 

原因:开发环境与esLint当前的解析功能不兼容导致的

解决方案:

1.下载依赖
npm i babel-eslint -S
2.在.eslintrc.js文件加上parse: 'babel-eslint'
module.exports = { parse: 'babel-eslint',parserOptions: { "ecmaVersion": 7,"sourceType": "module"}
}

2.启动时报各种依赖错误 

Cannot find module 'mini-css-extract-plugin'

Cannot find module 'style-loader'

Cannot find module 'css-loader'

原因:这是未下载依赖的报错,并且下载依赖时关于版本的兼容也很重要,我们需要先查询依赖的版本,指定版本去下载

关于如何去查找依赖版本?

(1)先查看依赖的所有历史版本

npm view style-loader versions

(2)查看指定依赖版本 需要的其他依赖版本

npm view style-loader@2.0.0 peerDependencies

从上面可知,style-loader2.0.0版本支持webpack4.0.0和webpack5.0.0,其他的以此类推,来处理依赖的报错问题。

(3)然后根据指定的版本去下载依赖:

npm i style-loader@2.0.0 -S
npm i webpack@5.0.0 -S

 项目中package.json中依赖版本配置参考:

 "dependencies": {"@testing-library/jest-dom": "^5.17.0","@testing-library/react": "^13.4.0","@testing-library/user-event": "^13.5.0","antd": "^5.14.2","babel-eslint": "^10.1.0","babel-plugin-import": "^1.13.8","css-loader": "^5.0.0","customize-cra": "^1.0.0","less": "^4.0.0","less-loader": "^7.3.0","mini-css-extract-plugin": "^2.8.1","moment": "^2.30.1","postcss": "^8.0.1","postcss-loader": "^5.0.0","react": "^18.2.0","react-app-rewired": "^2.2.1","react-dom": "^18.2.0","react-scripts": "5.0.1","style-loader": "^2.0.0","styled-components": "^6.1.8","web-vitals": "^2.1.4","webpack": "^5.0.0"}

相关文章:

  • 基于python+django+vue.js开发的健身房管理系统
  • 密码学在 Web3 钱包中的应用:私钥是什么?bitget钱包为例
  • 汽车电子笔记:BootLoader升级过程疑难问题解决方式(Bootloader响应10 02 + 刷死拯救机制)
  • 操作系统功能
  • 通过elementUI学习vue
  • Qt6.8 GRPC功能使用(2)标准 Qt实现客户端
  • ant 布局组件 组件等高设置
  • Docker日常使用记录
  • c++学习:构造函数
  • 【Micropython教程】点亮第一个LED与流水灯
  • 单细胞Seurat - 细胞聚类(3)
  • RK3568 android11 调试陀螺仪模块 MPU-6500
  • GPT 的基础 - T(Transformer)
  • spring boot 整合 minio存储 【使用篇】
  • kali linux通过aircrack-ng命令破解wifi密码
  • 【译】理解JavaScript:new 关键字
  • 230. Kth Smallest Element in a BST
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • crontab执行失败的多种原因
  • echarts的各种常用效果展示
  • EOS是什么
  • gitlab-ci配置详解(一)
  • Golang-长连接-状态推送
  • go语言学习初探(一)
  • JavaScript的使用你知道几种?(上)
  • Java到底能干嘛?
  • JS实现简单的MVC模式开发小游戏
  • Median of Two Sorted Arrays
  • node入门
  • 初识 beanstalkd
  • 我与Jetbrains的这些年
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # Panda3d 碰撞检测系统介绍
  • #FPGA(基础知识)
  • #if 1...#endif
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $L^p$ 调和函数恒为零
  • %check_box% in rails :coditions={:has_many , :through}
  • ()、[]、{}、(())、[[]]命令替换
  • (12)Linux 常见的三种进程状态
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (笔试题)分解质因式
  • (二)springcloud实战之config配置中心
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二)丶RabbitMQ的六大核心
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (五)网络优化与超参数选择--九五小庞
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET MVC第三章、三种传值方式
  • .net MySql