2017-10-19 33 views
0

我从API获取一个对象数组,并通过Redux将它存储在articleData的prop中。道具存储这样的:在Redux reducer中预先加入无名数组

articleData Prop

在我减速器我想前面加上这种阵列与另一articleData对象。我想要预先存储的对象存储在action.articleData中,但我无法找到一种预先指定此数组而不命名的方法。这是我的减速器代码:

export function articleData(state = {}, action) { 
    switch (action.type) { 
     case 'ARTICLE_FETCH_DATA_SUCCESS': 
      return action.articleData; 

     //HERE IS THE PROBLEM! 
     case 'ARTICLE_POST_NEW_ARTICLE_SUCCESS': 
      return {arr:[action.articleData, ...state]} 

     default: 
      return state; 
    } 
}

它预先成功地将新对象。 问题是:当我执行此代码时,它将状态从对象数组更改为名为“arr”的数组。见图片:

enter image description here

我想不出如何只需添加到对象的数组,而不将其命名为东西。如果我从减速器代码中删除arr:,则会导致语法错误。

在此先感谢任何愿意帮助我的人! :)

+0

不应该'state.articleData'存在吗? 'return {... state,articleData:[action.articleData,... state.articleData]}' –

回答

1

减速器的状态articleData是一个数组。在ARTICLE_POST_NEW_ARTICLE_SUCCESS动作处理程序中,您将创建一个新的状态,该状态是一个对象,具有arr属性 - {arr:[action.articleData, ...state]}

而是返回一个新的数组与新articleData,传播state进去:

case 'ARTICLE_POST_NEW_ARTICLE_SUCCESS': 
     return [action.articleData, ...state] 

另外由于减速机的状态是一个数组,改变初始状态为空数组:

export function articleData(state = [], action) { 
+0

state是一个对象而不是数组 –

+0

这个reducer的状态是一个数组。 –

+0

我不这么认为:'state = {}'是初始状态。 –