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

//store/index.js
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')
);

 

 参考后台管理

https://github.com/liyinglihuannan/react-admin

https://segmentfault.com/a/1190000009379222

posted @ 2021-04-29 11:07  ThisCall  阅读(77)  评论(0编辑  收藏  举报