在Redux reducer中预先加入无名数组
我从API获取一个对象数组,并通过Redux将它存储在articleData
的prop中。道具存储这样的:在Redux reducer中预先加入无名数组
在我减速器我想前面加上这种阵列与另一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”的数组。见图片:
我想不出如何只需添加到对象的数组,而不将其命名为东西。如果我从减速器代码中删除arr:
,则会导致语法错误。
在此先感谢任何愿意帮助我的人! :)
减速器的状态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) {
state是一个对象而不是数组 –
这个reducer的状态是一个数组。 –
我不这么认为:'state = {}'是初始状态。 –
不应该'state.articleData'存在吗? 'return {... state,articleData:[action.articleData,... state.articleData]}' –