首页 > 解决方案 > 如何在返回的对象中直接从动作中提取有效负载

问题描述

我正在使用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]});

但无法正确处理。

标签: reactjsecmascript-6redux

解决方案


如果您需要您所在州的有效负载内容,您也可以传播它:

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

如果 state 是一个数组,你可以使用array spread向它添加项:

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

推荐阅读