別のマップにネストされているマップに新しいキーと値のペアを追加したいと思います。キーがすでに存在する場合は、置き換える必要があります。
mergeDeepIn()でうまくいくと思いましたが、「無効なkeyPath」エラーが発生します。
状態は次のようになります。
{
"requests":{
"1":{
"title":"I have a question",
"customerId":2,
"messages":{
"222":{
"text":"Hello!",
"senderId":1,
},
},
...
},
...
},
}
「リクエスト」と「メッセージ」は不変のマップです。
私はこれを試しました:
const message = fromJS({
"5": {
text: "test",
},
})
state.mergeDeepIn(['requests', 1, 'messages'], message)
メッセージは「メッセージ」マップに追加される必要があります。
不変性はデータ構造のプロパティであり、次のことを意味します。データ構造が作成された後は、二度と変更されることはありません。から/への値の追加または置換は、を変更するMap
ことを意味しますMap
。これは、immutable-jsが防止しようとするものです。
あなたができることはMap
、あなたの既存のものから新しいものを作ることです。
const {Map} = require('immutable');
m = Map({a:1});
Map({...m.toJSON(), b:2}) // Map { "a": 1, "b": 2 }
Map({...m.toJSON(), a:2}) // Map { "a": 2 }
m.set('a', 2) // Map { "a": 2 } , creates a new map same as line above
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加