2017-03-03 144 views
3

我在這裏的目標是使減速處理嵌套數據追加數據

enter image description here

林很困惑在這裏,你可以下一個狀態對象上看到我追加額外的數據後,asia array突然移動到data object之外,並將要插入的數據放在裏面。這裏的問題是asia array不應該移出data object

這裏是我的代碼:

const INITIAL_STATE = { 
    data: [] 
}; 

export default (state = INITIAL_STATE, action) => { 
    switch(action.type) { 
     // Fetch speakers 
     case GET_SPEAKERS_SUCCESS: { 
      return Object.assign({}, state.data, { 

       data: { 
        [action.payload.country]: action.payload.data 
       } 
      }); 
     } 
    } 

    return state; 
} 
+0

你應該全部退回狀態,而不僅僅是state.data所以... 'Object.assign({},state' –

+0

我這樣做了,但它覆蓋了'數據對象'的內容,意思是以前的狀態'asia'存在,但是ne xt狀態,亞洲由'泰國'替換。 –

回答

2

嘗試:

data : [...state.data, 
    {  
     [action.payload.country]: action.payload.data 
    } 
] 

代替:

data: { 
    [action.payload.country]: action.payload.data 
} 
+0

謝謝你,這一個工程:D。我不知道這是不是'... state.data'做的是創建當前狀態的副本? –

+0

這是擴散算子。它基本上只是把整個數組放到那裏,而不需要你循環它。請參閱https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator。如果這回答你的問題,請適當地標記謝謝。 –

+0

由於數據是一個對象,我認爲適當的方式將是'data:{... state.data,{action.payload.country]:action.payload.data }} –