ImmutableJSを使用して次のことを実現するにはどうすればよいですか。
myMap.get(key).Push(newData);
次のように実行できます(これを参照してください JSBin )
const myMap = Immutable.fromJS({
nested: {
someKey: ['hello', 'world'],
},
});
const myNewMap = myMap.updateIn(['nested', 'someKey'], arr => arr.Push('bye'));
console.log(myNewMap.toJS());
// {
// nested: {
// someKey: ["hello", "world", "bye"]
// }
// }
myMap
は不変であるため、その中のデータを設定、更新、削除しようとすると、新しいデータへの参照が返されます。したがって、それにアクセスするには、変数に設定する必要があります(この場合はmyNewMap
)。
キーで参照される配列がプレーンなJavaScript配列である場合-実際にその値を変更します-そのため、コードは期待どおりに機能します(つまり、myMapには、 'key'に変更可能/変更された配列が含まれ、newDataがプッシュされます。)ただし、これは不変性の目的に反するため、myMapのキーがImmutable.Listを参照することをお勧めします。その場合は、次のようにします。
var newMap = myMap.set('key', myMap.get('key').Push(newData))