美文网首页
Redux和react-redux的基础使用

Redux和react-redux的基础使用

作者: 张奥博 | 来源:发表于2019-11-29 17:26 被阅读0次

    redux 和 react 没有关系,redux 可以用在任何框架中,redux 是一个状态管理器。
    connect 不属于 redux,它其实属于 react-redux。
    react-redux是Redux的官方React绑定库。它能够使你的React组件从Redux store中读取数据,并且向store分发actions以更新数据
    react项目中我们通常结合两者使用。
    首先通过import引入两者的依赖包:

    import { createStore } from 'redux';
    import { Provider,connect} from "react-redux";
    

    以上篇制作马云模拟器当做例子,代码如下:

    //子组件传过来的值
    let childrendata;
    /*-----------具体通知描述及数据处理方法部分-------------*/
    // Action通知及描述
    const increaseAction = { type: 'reduce' }
    // Reducer计算  基于原有state根据action得到新的state
    function counter(state = { count: 279000000000}, action) {
      const count = state.count;
      switch (action.type) {
        case 'reduce'://如果接到action为increase的通知执行
          return { count: childrendata}
        default:
          return state//返回新的state
      }
    }
    
    /*-----------数据存储器部分-------------*/
    // 根据reducer函数通过createStore()创建store(存储器)
    const store = createStore(counter)
    
    /*-----------映射方法及数据部分-------------*/
    //  将state映射到Counter组件的props(数据)
    function mapStateToProps(state) {
      return {
        value: state.count
      }
    }
    //  将action映射到Counter组件的props(方法)
    function mapDispatchToProps(dispatch) {
      return {
        onIncreaseClick: function (data) {
          childrendata = data;
          dispatch(increaseAction)//定义点击方法发送action
        }
      }
    }
    // 传入上面两个函数参数,将Counter组件变为App组件
    const App = connect(
      mapStateToProps,
      mapDispatchToProps
    )(Counter)
    
    const Home = () => {
      return(
        <Provider store={store}>
          <App/>
        </Provider>
      )
    }
    export default Home
    

    react-redux的Provider,将redux创建的store传给子组件,供调用。
    子组件中执行onIncreaseClick函数,dispatch(increaseAction),触发更新。redux中counter处理数据,返回当前最新的值。
    react-redux的connect()函数将mapStateToProps和mapDispatchToProps,挂载到Counter的组件上,返回新的组件。
    mapStateToProps方法将counter中定义的值映射为value传给子组件,以供调用。
    mapDispatchToProps将方法传给子组件,以供调用。

    项目预览地址:https://aotuotage.github.io/next-test/
    代码地址:https://github.com/aotuotage/next-test

    相关文章

      网友评论

          本文标题:Redux和react-redux的基础使用

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