如何在React中访问不同reducer的状态

时间:2019-01-03 06:43:24

标签: reactjs redux redux-saga

我遇到需要将auth相关数据访问另一个模块的情况

例如。

我有两个不同的reducer文件

  • auth.js

  • todo.js

现在,我需要将auth reducer状态访问到todo中,为此,我已经组合了reducer

但是当我尝试操纵道具时,我无法将auth数据访问到todo模块中

我们有什么简单的方法吗,让我知道这件事

3 个答案:

答案 0 :(得分:1)

认为您必须拥有mapStateToProps

function mapStateToProps(state){

  return {
      auth: state.auth,
      todo: state.todo

  }
}

答案 1 :(得分:0)

您需要在Redux商店中整合减速器。传统上,您可以通过import {createStore, combineReducers} from "redux"

完成此操作

然后像这样设置您的商店:

const store = createStore(combineReducers({
   auth: authReducer,
   todo: todoReducer
}))

这样,您连接的组件就可以在任何给定时间访问两种减速器状态。否则,在两个reducer之间混合数据毫无意义。减速器应该处理自己的状态,并且应该这样独立运行。

答案 2 :(得分:0)

我自己进行研发时得到了解决方案

问题是我只在todo模块中使用了todo reducer,但是如果我们需要使用不同的reducer数据,而不是像下面那样分别映射状态,则需要

const mapStateToProps = state => {
  const auth =
    state.get('auth') && state.get('auth').toJS && state.get('auth').toJS();
  const todo =
    state.get('todo') && state.get('todo').toJS && state.get('todo').toJS();
  return {
    ...auth,
    ...todo
  };
};

这是我们可以使用mapStateToProps将多个状态数据访问到模块中并根据业务需求将其返回的方式