私は私の構造を更新しようとしている「無効なキーパス」というエラーを取得しています:JS不変更新深い構造
state = fromJS({
cmsData: {
"pages": [
{
"name": "page1",
"content": {
"header": "Example header",
"intro": "Example intro",
"body": "Example body",
}
}
...
}
私はこの使用して、ページの配列の値を更新しようとしている:
をstate.setIn(['cmsData', 'pages', index, 'content', title], value)
indexは数字で、タイトルは文字列で、値も文字列です。
私は実行して代わりに新しいアイテムを作成することができます。
state.setIn(['pages', index, 'content', title], value)
しかし、すぐに私はメインの「cmsData」オブジェクトにアクセスしようとして、私はエラーを取得します。
------ ------ UPDATE
私はオブジェクトを持っている場合は、私が最初にcmsDataオブジェクトを設定していなく、それが初期状態
state.set('cmsData', data)
ています初期状態として、正常に動作します。しかし、それが設定されています後に更新しようとすると、無効なキーパスに
を生成----- ----- SOLUTION
代わりに初期データを設定する、私が働いていたmergeDeepを使用!
state.mergeDeep({ 'cmsData': data })
詳細情報を見る私は実際には、オブジェクトを初期状態にするのではなく、更新しようとする前にcmsDataオブジェクトを設定しています。非常に明確ではないことに対する謝罪! – Boyswan