我遇到需要将auth相关数据访问另一个模块的情况
例如。
我有两个不同的reducer文件
auth.js
todo.js
现在,我需要将auth reducer状态访问到todo中,为此,我已经组合了reducer
但是当我尝试操纵道具时,我无法将auth数据访问到todo模块中
我们有什么简单的方法吗,让我知道这件事
答案 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将多个状态数据访问到模块中并根据业务需求将其返回的方式