在分页缩减器中附加数据 - reactjs
Appending data in a pagination reducer - reactjs
我只想问,为什么我的 reducer 一直覆盖我的嵌套数据,即使 value 是一个数组。基本上我在这里构建的就像一个分页。到目前为止,这是我的代码:
const INITIAL_STATE = {
data: [],
page: 1
};
export default (state = INITIAL_STATE, action) => {
switch(action.type) {
case GET_NEWS_SUCCESS: {
return {
data : {
[action.payload.category]: [ action.payload.data ]
},
page: action.payload.page };
}
}
return state;
}
下图是我的reducer的return数据,基本上在下一个状态的echelon array
上,0
键应该还在,并且会追加另一组数据.但是正如您在第二个红色矩形上看到的那样,它覆盖了之前的 0
键。
您在这些行中覆盖了现有数组:
data : {
[action.payload.category]: [ action.payload.data ]
},
您应该将新对象附加到现有数组。您可以使用扩展语法来实现它:
case GET_NEWS_SUCCESS: {
if (!state.data[action.payload.category]) {
state.data[action.payload.category] = [];
}
return {
data : {
[action.payload.category]: [ ...state.data[action.payload.category], action.payload.data ]
},
page: action.payload.page };
}
我只想问,为什么我的 reducer 一直覆盖我的嵌套数据,即使 value 是一个数组。基本上我在这里构建的就像一个分页。到目前为止,这是我的代码:
const INITIAL_STATE = {
data: [],
page: 1
};
export default (state = INITIAL_STATE, action) => {
switch(action.type) {
case GET_NEWS_SUCCESS: {
return {
data : {
[action.payload.category]: [ action.payload.data ]
},
page: action.payload.page };
}
}
return state;
}
下图是我的reducer的return数据,基本上在下一个状态的echelon array
上,0
键应该还在,并且会追加另一组数据.但是正如您在第二个红色矩形上看到的那样,它覆盖了之前的 0
键。
您在这些行中覆盖了现有数组:
data : {
[action.payload.category]: [ action.payload.data ]
},
您应该将新对象附加到现有数组。您可以使用扩展语法来实现它:
case GET_NEWS_SUCCESS: {
if (!state.data[action.payload.category]) {
state.data[action.payload.category] = [];
}
return {
data : {
[action.payload.category]: [ ...state.data[action.payload.category], action.payload.data ]
},
page: action.payload.page };
}