2016-11-07 90 views
2

在我减速,我有这样的状态:如何使用状态对象中更新阵列反应/终极版

const initialState = fromJS({ 
resources: false, 
testval: [0, 0, 0, 0],}) 

我想追加或当我的动作被触发名为testVal删除阵列值。我有不可变的,不可变性辅助程序导入,但即时通讯与语法挣扎,以使其工作。

例如这个心不是工作 - 国家心不是改变:

return update(state, { 
     testval: { 
      $set: 'test' 
     } 
    }); 

回答

0

好吧我想通了使用Immutable。

添加到阵列:

return state.updateIn(['showtask'], arr => arr.push(action.userid)) 

从阵列中删除:

return state.updateIn(['showtask'], arr => arr.splice(arr.indexOf(action.userid),1)) 
2

看起来你可能会被混合了两个不同的工具集。 Immutable.js是一组专门的数据结构,而Immutability-Helper库期望在纯JS对象上工作。

您可能需要阅读Redux文档的Immutable Update Patterns部分,该部分讨论如何在普通JS数据上正确执行不可变更新的方法以及Prerequisite Concepts文档页面中的相关链接。

0

它,因为你正在更新其错误的方式,

月1日是你的阵列将被转换为列表对象,所以需要在列表样式中更新。

下面的例子1是我正在更新的索引,你可以对此使用任何动态变量,item也是该索引处的当前值。如果这是对象(在其他一些用例中),则可以修改该对象并将其返回。

const initialState = Immutable.fromJS({ 
resources: false, 
testval: [0, 0, 0, 0]}); 

//replace initial state with state, i just posted example code 

initialState = initialState.set("testval",initialState.get("testval").update(1,(item)=>{ 
return 2; 
})); 
console.log(initialState.get("testval")) 

的更详细的例子,你也可以查看这个帖子https://onl9class.com/using-immutable-js/

相关问题