2017-08-22 38 views
0

我想通過一個內部items添加新鍵值對的對象一個下面給出:如何深入添加新的鍵值對對象內不可變的Js地圖在REDX ..?

{ 
    appElements: { 
    layers: { 
     layer_1: { 
     background: { 
      width: '100px', 
      height: '100px', 
      bgColor: '#aaaaaa', 
      bgImage: 'http:bgimage1.png' 
     }, 
     items: { 
      yrgroih9: { 
      width: '100px', 
      x: '200px' 
      }, 
      qhy0dukj: { 
      width: '100px', 
      x: '200px' 
      }, 
      '7lw2nvma': { 
      width: '100px', 
      x: '200px' 
      } 
     } 
     } 
    } 
    } 
} 

代碼用於增加內部items新的對象:

case 'ADD_OBJECT': 
    return state.setIn(["appElements","layers","layer_1","items"],{ 
    [action.objData.item_id]: { 
     "width": action.objData.width, 
     "x": action.objData.x 
    }, 
    }); 

第一項對象嘗試添加里面的items作品完美:

yrgroih9: { 
    width: '100px', 
    x: '200px' 
} 

排列的redux存儲數據(從chrome redux devtools): enter image description here

但添加另一個對象將刪除的第一個條目,並添加當前條目。

也試過updateIn函數,它不工作。

如何添加對象而不刪除舊的。

+0

是否有你的對象的任何錯別字? 'layer_1'和'items'應該是一個數組。你能更新正確的對象結構嗎? –

+0

有沒有基於數組的索引..只有對象的鍵值對,這是我添加的正確的對象結構...我已經添加了REDX存儲對象作爲圖像文件,以便更好地理解..幫助我.. – ArunValaven

+0

所以這就是在哪裏錯誤進入,你沒有'qhy0dukj'或'7lw2nvma',因爲這些被忽略。 'items'將'yrgroih9'作爲關鍵字,它只有一個關鍵字,因爲它是一個散列。 –

回答

0

應該是這樣的:

return state.setIn(
    ["appElements","layers","layer_1","items", action.objData.item_id], 
    fromJS({ 
     "width": action.objData.width, 
     "x": action.objData.x 
    })); 
+0

謝謝..它的工作.. @thedude ...但需要添加括號「)」爲您的答案中的setIn函數.. – ArunValaven

相關問題