Immutable.js Push into array in nested object

匿名 (未验证) 提交于 2019-12-03 01:33:01

问题:

Assume there is an object:

const object = {   'foo': {     'bar': [1, 2, 3]   } } 

I need to push 4 to object.foo.bar array.

Right now I'm doing it like this:

const initialState = Immutable.fromJS(object) const newState = initialState.setIn(   ['foo', 'bar', object.foo.bar.length],   4 ) console.log(newState.toJS()) 

But I don't really like it, since I need to use object.foo.bar.length in the path. In my real example object is nested much deeper, and getting array's length looks very ugly. Is there another, more convenient way?

回答1:

This should work

initialState.updateIn(['foo', 'bar'], arr => arr.push(4)) 

References:



回答2:

I'm using seamless-immutable, when I'm adding a new item to array of nested object, I got this error:

The push method cannot be invoked on an Immutable data structure.

My array still has push method, but it doesn't work. The solution is use concat instead, more details on #43:

initialState.updateIn(['foo', 'bar'], arr => arr.concat([4])); 

Hope this help!



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!