我發現了一個「無效的keyPath」錯誤嘗試更新我的結構:不變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)
索引是一個數字,標題字符串和值也是一個字符串。然而,一旦
state.setIn(['pages', index, 'content', title], value)
我嘗試訪問的主要「cmsData」對象,然後我得到一個錯誤:
我可以代替做創建一個新的項目。
------ UPDATE ------
我最初設定cmsData對象,而不是它是初始狀態
state.set('cmsData', data)
如果我有對象作爲初始狀態,它工作正常。然而嘗試它被設置後更新產生無效的keyPath
----- -----解決方案
而不是設置初始數據的,我用mergeDeep它的工作!
state.mergeDeep({ 'cmsData': data })
查看更新瞭解更多信息!我實際上在設置cmsData對象之前嘗試更新它,而不是該對象是初始狀態。道歉不清楚! – Boyswan