Ant Design的爬坑之路(一)

Gu_Yan發表於2018-08-18

antd的安裝以及webpackantd按需引入配置

注:本篇文章筆者主要講一下基於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安裝lessless-loader(lessless-loader我就不做過多的解釋了)
  • 通過yarn add babel-plugin-import 安裝babel-plugin-import
  • 通過yarn eject 暴露出webpack的配置檔案
  • config資料夾下的webpack.config.dev.jswebpack.config.prod.js檔案中配置less
    Ant Design的爬坑之路(一)
    Ant Design的爬坑之路(一)
  • 配置antd的樣式按需引入
    Ant Design的爬坑之路(一)
  • 刪除我們插入的import 'antd/dist/antd.css,重啟我們的專案,你一定會發現頁面上會報下圖所示的錯誤
    Ant Design的爬坑之路(一)
  • 我們重新安裝less,注意:此時我們不要安裝最新版本,通過yarn add less@2.7.3安裝2.7.3版本的less
  • 成功後重啟我們的專案,此時時刻你就會發現頁面上已經成功引入了antd的樣式。

antd定製主題

  • 官方文件中也對定製主題做了描述,但是親測並沒有效果(可能是筆者的使用方法錯誤,若您有更好的方法,歡迎評論或者私信,共同進步),筆者推薦如下方法,在webpack.config.dev.jswebpack.config.prod.js中配置
    Ant Design的爬坑之路(一)

寫在最後

第一次發表,之後陸續會更新antd的一系列,文章涉及的問題都是曾經困擾筆者的一些坑,目的是為了讓一些初涉antd的朋友們可以少走彎路,如果大家有什麼意見歡迎留言或私信。

相關文章