在react-redux应用程序中使用来自es6的扩展运算符和stage-2加载器

时间:2017-03-23 14:15:25

标签: reactjs ecmascript-6 redux react-redux

我正在使用我的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获取新数据。我希望从之前的州获得连锁数据。有人可以帮忙吗

2 个答案:

答案 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)可以使用更简洁的方法来执行此操作,但此示例将明确实现我们需要执行的操作。