假设有一个对象:
const object = {
'foo': {
'bar': [1, 2, 3]
}
}
我需要将4
推送到object.foo.bar
数组。
现在我这样做:
const initialState = Immutable.fromJS(object)
const newState = initialState.setIn(
['foo', 'bar', object.foo.bar.length],
4
)
console.log(newState.toJS())
但我真的不喜欢它,因为我需要在路径中使用object.foo.bar.length
。在我的真实示例中,对象嵌套得更深,并且获取数组的长度看起来非常难看。还有另一种更方便的方法吗?
答案 0 :(得分:33)
这应该有效
initialState.updateIn(['foo', 'bar'], arr => arr.push(4))
参考文献:
答案 1 :(得分:5)
我正在使用seamless-immutable
,当我向嵌套对象数组添加新项时,我收到此错误:
无法在Immutable数据结构上调用push方法。
我的数组仍然有push
方法,但它不起作用。解决方案是使用concat,而不是#43:
initialState.updateIn(['foo', 'bar'], arr => arr.concat([4]));
希望这有帮助!