antd
的安装以及webpack
的antd
按需引入配置
注:本篇文章笔者主要讲一下基于
React
官方脚手架创建项目后,如何按需引入antd
,和如何使用antd
的定制主题,仅限于使用层面,本系列文章适合初涉antd
的使用者。
安装antd
- 使用
create-react-app
脚手架创建项目 - 通过
yarn add antd
安装antd(mac本需要在前面加sudo
)
antd
的按需引入
- 按照官方文档引入组件
import React from 'react';
import ReactDOM from 'react-dom';
import { LocaleProvider, DatePicker, message } from 'antd';
// 由于 antd 组件的默认文案是英文,所以需要修改为中文
import zhCN from 'antd/lib/locale-provider/zh_CN';
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-cn');
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
date: '',
};
}
handleChange(date) {
message.info('您选择的日期是: ' + (date ? date.toString() : ''));
this.setState({ date });
}
render() {
return (
<LocaleProvider locale={zhCN}>
<div style={{ width: 400, margin: '100px auto' }}>
<DatePicker onChange={value => this.handleChange(value)} />
<div style={{ marginTop: 20 }}>当前日期:{this.state.date && this.state.date.toString()}</div>
</div>
</LocaleProvider>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
复制代码
- 不难发现我们的页面中并没有把
antd
的样式引入,此时聪明的你一定会想到在页面中直接把antd
的样式引入
即插入
import 'antd/dist/antd.css'
,但是这样引入的话我们是不是就把一些没用到的样式也引入了呢?
- 那么有没有方法让我们不用加这一行代码,直接在引入组件的时候就把样式带上呢?并且还仅仅引入了我们用到的样式呢?当然答案是肯定的,话不多说,我们直接上干货
如何配置
- 通过
yarn add less less-loader
安装less
与less-loader
(less
与less-loader
我就不做过多的解释了) - 通过
yarn add babel-plugin-import
安装babel-plugin-import
- 通过
yarn eject
暴露出webpack
的配置文件 - 在
config
文件夹下的webpack.config.dev.js
和webpack.config.prod.js
文件中配置less
- 配置
antd
的样式按需引入 - 删除我们插入的
import 'antd/dist/antd.css
,重启我们的项目,你一定会发现页面上会报下图所示的错误 - 我们重新安装
less
,注意:此时我们不要安装最新版本,通过yarn add less@2.7.3
安装2.7.3
版本的less
- 成功后重启我们的项目,此时时刻你就会发现页面上已经成功引入了
antd
的样式。
antd
定制主题
- 在官方文档中也对定制主题做了描述,但是亲测并没有效果(可能是笔者的使用方法错误,若您有更好的方法,欢迎评论或者私信,共同进步),笔者推荐如下方法,在
webpack.config.dev.js
和webpack.config.prod.js
中配置
写在最后
第一次发表,之后陆续会更新
antd
的一系列,文章涉及的问题都是曾经困扰笔者的一些坑,目的是为了让一些初涉antd
的朋友们可以少走弯路,如果大家有什么意见欢迎留言或私信。