react+less+antd 复习搭建(一)
一、安装
npm install -g create-react-app
二、创建react应用
create-react-app 项目名称
进入项目文件
npm start 或 yarn
npm run eject 暴露webpack
安装包配置自己可以重新分配一下,其实并不影响打包,打包模块插件是按引入打包,不引入的不会打包的

添加redux
yarn add redux
src下创建两个文件store下的index和reducer
import {createStore} from 'redux';
import reducer from './reducer';
const store =createStore(reducer);
export default store;
//store/reducer.js
const defaultState={ texts:'', list:[1,2] }; export default (state=defaultState,action)=>{ return state; }
添加antd,并且按需引入
yarn add antd
yarn add babel-plugin-import
然后在package.json中加入
"plugins": [ [ "import", { "libraryName": "antd", "libraryDirectory": "es", "style": "css" } ] ]

Redux store 仅支持同步数据流。使用 thunk 等中间件可以帮助在 Redux 应用中实现异步性。可以将 thunk 看做 store 的 dispatch() 方法的封装器;我们可以使用 thunk action creator 派遣函数或 Promise,而不是返回 action 对象。
注意,没有 thunk 的话,默认地是同步派遣。也就是说,我们依然可以从 React 组件发出 API 调用(例如使用 componentDidMount() 生命周期方法发出这些请求),但是我们在 Redux 应用中难以实现以下两点:
- 可重用性(思考下合成)
- 可预测性,只有 action creator 可以是状态更新的单一数据源
要在应用中使用 thunk 中间件,请务必安装 redux-thunk 软件包:
yarn add redux-thunk
store/index.js
import {createStore,compose, applyMiddleware} from 'redux';
import thunk from 'redux-thunk';
import reducer from './reducer';
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store=createStore(reducer, composeEnhancers(
applyMiddleware(thunk)
));
export default store;
安装
yarn add redux-immutable
或
npm install --save redux-immutable
src\store\reducer.js
import {combineReducers} from 'redux-immutable'
// import { type } from '../action';
import {reducer as menuReducer} from '../components/NavLeft/store';
import {reducer as userReducer} from '../pages/user/store';
const reducer= combineReducers({
menu:menuReducer,
user:userReducer,
});
export default reducer;
如果报错

是因为 redux-immutable 依赖 使用 Immutable
yarn add immutable
理解参考以下博客
https://blog.csdn.net/m0_37527015/article/details/84338831
https://www.jianshu.com/p/3e162080711b
https://www.cnblogs.com/greatluoluo/p/8469224.html
使用 Immutable 后,如下图,当红色节点的 state 变化后,不会再渲染树中的所有节点,而是只渲染图中绿色的部分:

安装
yarn add react-redux
项目的index.js,整个项目的唯一第一入口
import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; import store from './store'; import App from './App' // import * as serviceWorker from './serviceWorker'; ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') );

参考后台管理

浙公网安备 33010602011771号