react脚手架typescript版本整合redux、antd按需加载的简单使用(如有侵权,请联系我)
1.下载create-react-app
cnpm i create-react-app -g //全局下载react脚手架,mac用户加上sudo
2.创建react项目(注意:进入启动测试一下项目是否能正常运行)
create-react-app ts-react-study --typescript //--typescript创建脚手架默认引入typescript
3.引入antd,配置按需加载(antd官方有介绍,可以去官方api查看,这里就不用贴了,相信到这里的都是大佬,也可以继续看下去) antdAPI官网链接
cnpm i antd --save //antd就是typescript写的,不需要引入@types/antd这样的依赖
4.引入react-app-rewired、babel-plugin-import、customize-cra依赖配置按需加载
cnpm i react-app-rewired babel-plugin-import customize-cra --save
5.创建一个config-overrides.js文件在根目录下
config-overrides.js文件代码如下
const {
override, fixBabelImports,addLessLoader } = require("customize-cra");
module.exports = override(
fixBabelImports("import", {
libraryName: 'antd', style: true }),
addLessLoader({
javascriptEnabled: true,
modifyVars: {
'@primary-color': 'red' }
})
);
6.这时候重新启动会报错,这时候我们还需要less和less-loader,这样就不会报错了
cnpm i less less-loader --save
7.修改package.json文件(把scripts下面的start、test、build替换如下代码)
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject",
"client": "serve build"
}
重新启动项目 引入antd测试一下样式是否自动导入(修改index.tsx文件)
import React from 'react';
import ReactDOM from 'react-dom';
import {
Button} from 'antd';
const Root: React.FC = () => (
<Button>按钮</Button>
);
ReactDOM.render(<Root />, document.getElementById('root') as HTMLElement);
8.如需要使用scss的大佬,可以直接引入,react脚手架内部有对应的配置
cnpm i sass sass-loader node-sass -D
然后创建一个scss文件测试一下样式是否生效
9.引入react-router-dom路由
cnpm i react-router-dom @types/react-router-dom --save
10.引入redux、react-redux、react-thunk(重点使用)
cnpm i redux react-redux react-thunk @types/react-redux @types/react-thunk -D
11.制作一个简单的计数器案例
11.1创建store目录在src下面
11.2创建actions.ts文件
import {
INCREMENT_COUNTER, DECREMENT_COUNTER, INCREMENT_ACTION_TYPE, DECREMENT_ACTION_TYPE } from './types';
import {
Dispatch } from 'redux';
const incrementCount = (number: number): INCREMENT_ACTION_TYPE => ({
type: INCREMENT_COUNTER, number });
export const asyncIncrementCount = (number: number) => <