具体是那些坑就不说了,反正按照官网的说明总是会出点BUG,以下就是配置流程
一个基于 Preact / React / React Native 的 UI 组件库,详见官网:https://mobile.ant.design/index-cn
1.安装React脚手架
$ npm install -g create-react-app
注意:工具会自动初始化一个脚手架并安装 React 项目的各种必要依赖,如果在过程中出现网络问题,请尝试配置代理或使用其他 npm registry。
2.创建一个React项目并安装 antd-mobile
$ create-react-app my-app
$ cd my-app
$ npm start
$ npm install antd-mobile --save
打开 http://localhost:3000/ 访问你的应用。
3.配置修改index.html
4.在index.js中引入组件
//(如果不设置按需加载则需要引入样式文件,此文件可手动按需更换:)
import 'antd-mobile/dist/antd-mobile.css'; // or 'antd-mobile/dist/antd-mobile.less'
//引入React组件
import { Button } from 'antd-mobile';
ReactDOM.render(, document.getElementById('root'));
5.设置按需加载
引入 react-app-rewired
。由于新的 [email protected] 版本的关系,你需要还需要安装 customize-cra
。
$ npm install react-app-rewired customize-cra --save-dev
并修改 package.json
里的启动配置。
/* package.json */
"scripts": {
- "start": "react-scripts start",
+ "start": "react-app-rewired start",
- "build": "react-scripts build",
+ "build": "react-app-rewired build",
- "test": "react-scripts test --env=jsdom",
+ "test": "react-app-rewired test --env=jsdom",
}
使用 babel-plugin-import
, babel-plugin-import 是一个用于按需加载组件代码和样式的 babel 插件(原理),后面我们会修改它的 config-overrides.js
文件。
$ npm install babel-plugin-import --save-dev
然后在项目根目录创建一个 config-overrides.js
文件 用于修改默认配置,并修改如下。
+ const { override, fixBabelImports } = require('customize-cra');
+ module.exports = override(
+ fixBabelImports('import', {
+ libraryName: 'antd-mobile',
+ style: 'css',
+ }),
+ );
现在我们可以更改引用方式,它会实现对js和css文件的按需加载
- import Button from 'antd-mobile/lib/button'; //老式非按需加载
+ import { Button } from 'antd-mobile'; //实现按需加载
6.定制我们想要的主题(修改默认的样式、颜色等)
样式变量:antd-mobile 的样式使用了 Less 作为开发语言,并定义了一系列全局/组件的样式变量,你可以根据需求进行相应调整。
定制方式:我们使用 modifyVars 的方式来覆盖变量。
首先,你的项目里需要包含如下依赖 babel-plugin-import less
less-loader
style-loader
css-loader
。
$ npm install --save-dev less less-loader style-loader css-loader
修改config-overrides.js
文件
const { override, fixBabelImports, addLessLoader } = require('customize-cra');//修改
module.exports = function override(config, env) {
return config;
};
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd-mobile',
style: true, //修改为true
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: { 'brand-primary': 'red' }, //修改样式部分
}),
);