2016-07-27 7 views
8

を押してオブジェクトがあると仮定しますImmutable.jsは、ネストされたオブジェクトに配列に

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

私は4object.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を使用する必要があるので、私は本当に、それを好きではありません。私の実際の例では、オブジェクトはもっと深く入れ子になっており、配列の長さは非常に醜いように見えます。別の便利な方法がありますか?

答えて

2

を私は、私は、ネストされたオブジェクトの配列に新しい項目を追加しているとき、seamless-immutableを使用していますこのエラーが発生しました:

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

配列にはまだpushメソッドがありますが、動作しません。解決策は、代わりに連結を使用#43についての詳細は次のとおりです。

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

・ホープこのヘルプ!

+0

不変のデータ構造では不可能なpushを変更するので、同じ問題があります。 – Lucas

関連する問題