Ale*_*rev 19 javascript immutable.js
假设有一个对象:
const object = {
'foo': {
'bar': [1, 2, 3]
}
}
Run Code Online (Sandbox Code Playgroud)
我需要推4送到object.foo.bar阵列.
现在我这样做:
const initialState = Immutable.fromJS(object)
const newState = initialState.setIn(
['foo', 'bar', object.foo.bar.length],
4
)
console.log(newState.toJS())
Run Code Online (Sandbox Code Playgroud)
但我真的不喜欢它,因为我需要object.foo.bar.length在路径中使用它.在我的真实示例中,对象嵌套得更深,并且获取数组的长度看起来非常难看.还有另一个更方便的方法吗?
zer*_*kms 36
这应该工作
initialState.updateIn(['foo', 'bar'], arr => arr.push(4))
Run Code Online (Sandbox Code Playgroud)
参考文献:
我正在使用seamless-immutable,当我向嵌套对象数组中添加新项目时,出现以下错误:
不能在不可变数据结构上调用push方法。
我的数组仍然有push方法,但是不起作用。解决方案是改用concat,有关#43的更多详细信息:
initialState.updateIn(['foo', 'bar'], arr => arr.concat([4]));
Run Code Online (Sandbox Code Playgroud)
希望有帮助!