react redux 用法与步骤

[亡魂溺海] 提交于 2020-03-18 12:21:51

第一步 创建全局的store,并创建对应的reducer规则,使用combineReducers合并多个reducer

import { createStore, combineReducers, compose, applyMiddleware } from 'redux';
import createPromiseMiddleware from 'redux-promise-middleware';
import filterReducer from './routes/Todo/filter/reducer';
import homeReducer from './routes/Home/reducer';
const reducer = combineReducers({
  todos: todoReducer,
  filter: filterReducer,
  home: homeReducer
});
const middlewares = [createPromiseMiddleware()]; // 这边可以加入其他到中间件 比如thunk logger// const middlewares = [logger, thunk];//
const win = window;
const storeEnhancers = compose(
  applyMiddleware(...middlewares),
  (win && win.devToolsExtension) ? win.devToolsExtension() : f => f
);

const initialState = {};
export default createStore(reducer, initialState, storeEnhancers);

第二部 在入口js用react-redux提供的provider 包裹, 提供store,用于订阅store变化以及更新全局

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';

import AppIntlProvider from './components/AppIntlProvider';
import App from './App';
import store from './Store';

// 未使用 AppIntlProvider 时在此处加载 moment
// import moment from 'moment';
// import 'moment/locale/zh-cn';
// moment.locale('zh-cn');

ReactDOM.render(
  <Provider store={store}>
    {/* <AppIntlProvider> */}
      <App />
    {/* </AppIntlProvider> */}
  </Provider>,
  document.getElementById('root')
);

第三部 在你需要用到的页面处 使用react-redux的connect 将action,state 映射到页面到props中

import React from 'react';
import { connect } from 'react-redux';
import {SETID} from './actions;
class Home extends React.Component {
 render() {
    return 123
 }
}

const mapDispatchToProps = dispatch => ({
  setId: (id) => { dispatch(SETID(id)); },
});

const mapStateToProps = state => ({ data: state.home });

export default connect(mapStateToProps, mapDispatchToProps)(Home);

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!