0

ツリー全体を変更せずに、ネストされた不変の Map アイテムを更新するにはどうすればよいですか?

例 :

var tree = Map({
 branch1:Map([]),
 branch2:Map({ 1: Map({id:1,value:'hello'}) }),
});

tree.branch2.1.value を更新するにはどうすればよいですか?

これにより、branch1 が新しいコピーを取得しますか?

これを Reactjs Redux アプリで使用しています。私もセレクターを使用しているbranch2ので、ブランチ1も変更せずに値を変更して、セレクターが再計算されないようにしたい

4

1 に答える 1

3

Immutable.js オブジェクトの値を変更すると、変更するのではなく、常に完全に新しいオブジェクトが返されます。それが本質的にライブラリの要点です。状態の変化の他の側面に基づいて不要な再レンダリングが心配な場合は、ライフサイクル メソッドを使用して、アプリの状態のその部分のshouldComponentUpdateが変化したときにのみコンポーネントが更新されるようにする必要があります。新しいオブジェクト。

あなたの場合、不変マップにsetInメソッドを使用するのが最も理にかなっています。

tree.setIn(['branch2', 1, 'value'], 'newValue');
于 2016-09-07T14:10:28.037 に答える