【ant design】antd@5+版本,还需要手动配置插件来实现组件和样式的按需加载吗?

antd支持tree shake,所以组件会自动实现按需加载,不需要我们配置。
但是antd@5之前的版本,我们都是配置babel-plugin-import来处理样式的按需加载。

那么,问题来了,antd@5+版本还需要去配置样式的按需加载吗?为什么?眼见为实,直接在源码里做测试。

首先,安装antd最新版本

npm i antd -D

我得到的是"antd": "^5.3.3"

所用框架为react@18+

antd打了不同种类的包,有dist, es, lib等,而通过import引入是从es包引入的。所以我们直接去node_modules/antd/es目录里做测试。

找两个最简单的组件alertbutton吧,我们在项目里引入Button组件,而不引入Alert组件,这样方便对照测试。

import { Button } from 'antd';

我们分别在这两个组件文件和样式文件里加console.log,如果button下的log都打印了内容,而alert下的log没有执行,这说明组件和样式都实现了按需加载。开始–
alert的组件文件
在这里插入图片描述
alert的样式组件
在这里插入图片描述
button组件文件
在这里插入图片描述
button的样式文件
在这里插入图片描述
我们在src/App.tsx中引入Button组件,但是不引入任何样式

import type { FC } from 'react';
import { Button } from 'antd';

const App: FC = () => (
  <div className="App">
    <Button type="primary">Button</Button>
  </div>
);

export default App;

在这里插入图片描述
可以看到,在引入组件时,组件内部是先引入的样式文件,所以会先打印样式中的日志,然后打印组件文件中的日志。然而,我们并没有看到alert相关的打印。所以,可以很明确的说,我们不需要再去配置组件和样式的按需加载了。因为这个版本的样式已经通过css-in-js被打包成js文件了,通过tree shaking,可以做到自动按需加载。

那么,官方给推荐引入的那个css文件是干啥的?

import 'antd/dist/reset.css';

看名称就能猜出大概,这是一份初始化样式的文件,把它放进项目里,就可以看到,样式得到了初始化
在这里插入图片描述
node_modules/antd/es/style中看下源码就可以知道
在这里插入图片描述
打开每个组件,可以发现都有引入这种重置样式
在这里插入图片描述


好了,谜团解开了。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ant Design Pro React 提供了 Upload 组件实现上传功能。以下是实现上传的步骤: 1. 导入 Upload 组件和其他必要的组件: ``` import { Upload, message } from 'antd'; import { InboxOutlined } from '@ant-design/icons'; ``` 2. 定义上传组件的属性和状态: ``` const { Dragger } = Upload; const props = { name: 'file', multiple: true, action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76', onChange(info) { const { status } = info.file; if (status !== 'uploading') { console.log(info.file, info.fileList); } if (status === 'done') { message.success(`${info.file.name} file uploaded successfully.`); } else if (status === 'error') { message.error(`${info.file.name} file upload failed.`); } }, }; class UploadComponent extends React.Component { state = { fileList: [], }; handleChange = ({ fileList }) => this.setState({ fileList }); render() { const { fileList } = this.state; return ( <Dragger {...props} fileList={fileList} onChange={this.handleChange}> <p className="ant-upload-drag-icon"> <InboxOutlined /> </p> <p className="ant-upload-text">Click or drag file to this area to upload</p> <p className="ant-upload-hint"> Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files </p> </Dragger> ); } } ``` 3. 在 render() 方法中渲染上传组件: ``` render() { return ( <div> <UploadComponent /> </div> ); } ``` 这样就可以实现一个基本的上传组件。此外,Ant Design Pro React 还提供了其他的上传组件和功能,可根据具体的求进行选择和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值