首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有可免疫js的redux

带有可免疫js的redux
EN

Stack Overflow用户
提问于 2018-01-16 20:06:00
回答 1查看 45关注 0票数 0

我试图在不变的js中使用redux。我做了两个减速机(布局,任务),它工作得很好。

layout.js

代码语言:javascript
复制
const initialState = Map({
  width: Dimensions.get('window').width,
  height: Dimensions.get('window').height,
});
export default function layout(state = initialState,action){
  // Some Tasks
}

task.js

代码语言:javascript
复制
const initialState = Map({
  list: Map({
    tasks: List([]),
    status: 'INIT',
  })
});

export default function task(state = initialState,action){
 // Some Tasks
}

我的问题是当我试图通过mapStateToProps获得状态时,就像

代码语言:javascript
复制
const mapStateToProps = (state) => {
  return {
    task: state.get('task')
  }
}

它给了我一个错误'state.get不是一个函数‘。当我把它改成

代码语言:javascript
复制
task: state.task

效果很好。

我的想法是,这是因为combineReducers没有使状态不变。有什么解决办法吗?或者使用task: state.task是正确的方式?

EN

回答 1

Stack Overflow用户

发布于 2018-01-16 20:55:38

您必须使用redux-immutable库使您的存储也成为一个不可变的对象。默认情况下,它将返回一个object。有更多的细节这里

当使用作为createStore实例的initialState调用Immutable.Collection时,进一步调用还原器将产生一个错误: 传递给initialState的createStore参数具有意外类型的" object“。 这是因为Redux combineReducers将状态对象视为普通的JavaScript对象。 使用redux创建的combineReducers使用Immutable.js API来迭代状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48289016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档