web-dev-qa-db-ja.com

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を使用する必要があるため、私はそれがあまり好きではありません。私の実際の例では、オブジェクトはより深くネストされており、配列の長さを取得することは非常に見苦しいです。別のより便利な方法はありますか?

16

これは動作するはずです

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

参照:

35
zerkms

seamless-immutableを使用しています。ネストされたオブジェクトの配列に新しいアイテムを追加すると、このエラーが発生しました。

Pushメソッドは、不変データ構造で呼び出すことはできません。

配列にはまだPushメソッドがありますが、機能しません。解決策は代わりにconcatを使用することです。詳細は #4

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

このヘルプを願っています!

5
Huy Nguyen