2017-03-03 82 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 }} –