如何直接在返回的对象中从动作中提取有效载荷

时间:2018-10-17 19:13:39

标签: reactjs ecmascript-6 redux

我正在使用Redux。在以下的减速器中,如果使用,则会出现错误:

return({...state, action.payload});

相反:

const add= (stateaction) => {
  switch (action.type) {       
    case "ADD":
    const {payload} = action;///  <=
    return({...state, payload}); // <= instead of thes two lines
    default:
      return state;
  }
};

我记得我们可以通过添加括号来做到这一点,例如:

return({...state, [action.payload]});

但无法正确处理。

1 个答案:

答案 0 :(得分:2)

如果您需要状态中的有效载荷内容,也可以传播它:

const add = (state, action) => {
  switch (action.type) {       
    case "ADD":
      return {...state, ...action.payload };
    default:
      return state;
  }
};

如果状态是数组,则可以使用array spread向其中添加项目:

const add = (state, action) => {
  switch (action.type) {       
    case "ADD":
      return [...state, action.payload];
    default:
      return state;
  }
};