我正在使用我的react-redux应用程序中的ES6扩展运算符
var defaultState = {val:1, items:[]};
export default function(state=defaultState, action){
switch(action.type){
case 'ADD_BOOK':
state.val = 0;
return {
...state,
items:action.payload.data.result
};
问题是每次我从分配给项目的action.payload.data.result
获取新数据。我希望从之前的州获得连锁数据。有人可以帮忙吗
答案 0 :(得分:2)
这应该有用。
return {
...state,
items: [
...state.items,
...aciton.payload.data.result
]
}
答案 1 :(得分:1)
所以你真正需要做的就是连接从你的有效载荷返回的现有项目和。
假设是这种情况,那么您需要从旧的items数组和new创建一个新数组。 You also want to avoid mutating the existing state.
从减速机返回一个全新的状态。通过克隆现有状态并添加新项目数组来执行此操作:
case 'ADD_BOOK':
var newState = Object.assign({}, state, {val:0}); // clones the existing state and adds our new val
newState.items = newState.Items.concat(action.payload.data.result);
return newState;
使用扩展语法或库(如immutable)可以使用更简洁的方法来执行此操作,但此示例将明确实现我们需要执行的操作。