我试图在不变的js中使用redux。我做了两个减速机(布局,任务),它工作得很好。
layout.js
const initialState = Map({
width: Dimensions.get('window').width,
height: Dimensions.get('window').height,
});
export default function layout(state = initialState,action){
// Some Tasks
}task.js
const initialState = Map({
list: Map({
tasks: List([]),
status: 'INIT',
})
});
export default function task(state = initialState,action){
// Some Tasks
}我的问题是当我试图通过mapStateToProps获得状态时,就像
const mapStateToProps = (state) => {
return {
task: state.get('task')
}
}它给了我一个错误'state.get不是一个函数‘。当我把它改成
task: state.task效果很好。
我的想法是,这是因为combineReducers没有使状态不变。有什么解决办法吗?或者使用task: state.task是正确的方式?
发布于 2018-01-16 20:55:38
您必须使用redux-immutable库使您的存储也成为一个不可变的对象。默认情况下,它将返回一个object。有更多的细节这里
当使用作为
createStore实例的initialState调用Immutable.Collection时,进一步调用还原器将产生一个错误: 传递给initialState的createStore参数具有意外类型的" object“。 这是因为ReduxcombineReducers将状态对象视为普通的JavaScript对象。 使用redux创建的combineReducers使用Immutable.js API来迭代状态。
。
https://stackoverflow.com/questions/48289016
复制相似问题