美文网首页
react-redux

react-redux

作者: 灯光树影 | 来源:发表于2018-10-19 18:22 被阅读0次

    一、作用

    react-redux插件可以使redux的使用变得更加简单。

    二、使用

    首先,要创建store和reducer

    • 创建store
    import { createStore, compose, applyMiddleWare } from 'redux'
    import reducer from './reducer'
    import thunk from 'redux-thunk'
    // 设置调试工具
    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose;
    // 设置中间件
    const enhancer = composeEnhancers(
      // 使用中间件
      applyMiddleware(thunk)
    );
    // 创建store
    const store = createStore(reducer, enhancer);
    // 导出store
    export default store;
    
    • 创建reducer
    const defaultState = {
      // some code here
    }
    export default (state = defaultState, action) => {
      switch(action.type){
        // some code here
        default: return state;
      }
    }
    

    然后,要在需要使用store的最上层组件中绑定store

    import React, { Component } from 'react'
    import { Provider } from 'react-redux'
    import 'store' from './store'
    class App extends Component{
      render(){
        return (
          <Provider store = { store }>
            { // some code here }
          </Provider>
        )
      }
    }
    export default App;
    

    最后,在使用store的各部分组件中使用connect将map,dispatch和props绑定并导出

    import React, { Component } from 'react'
    import { connect } from 'react-redux'
    class Header extends Component{
      // 在this.props中可以访问到connect传递过来的属性和方法
    
      render(){
        //some code here
      }
    
    }
    // 将state传递到props,这里的state即store中的state
    const mapStateToProps = (state) => ({
      search: state.search,
      //.....
    });
    // 将dispatch传递到props
    const mapDispatchToProps = (dispatch) => ({
      getSearch(){
        dispatch(...)
      },
      // ......
    });
    
    export default connect(mapStateToProps, mapDispatchToProps)(Header);
    

    三、流程图

    image.png

    相关文章

      网友评论

          本文标题:react-redux

          本文链接:https://www.haomeiwen.com/subject/skoxaftx.html