react-native redux - reducer更改数组元素

时间:2017-04-06 00:40:49

标签: react-native redux

我有一个状态,其中一部分是一个名为'numbers'的数组。其中一个操作是以下列方式更改状态:所有奇数应更改为零,应保留所有偶数。例如:

previous state
[9, 3, 2, 6, 8]

action
new state
[0, 0, 2, 6, 8]

动作创作者:

export const turnEven = () => {
  return {
    type: TURN_EVEN
  };
};

减速器:

case TURN_EVEN:
      return [...state, numbers: state.numbers.map(
        (i) => (i % 2 === 0 ? i : 0))];

这个产生错误:意外的令牌,预期, ...并且'return'行被指示为错误的位置。 请指教

1 个答案:

答案 0 :(得分:2)

查看您分享的代码:

case TURN_EVEN:
      return [...state, numbers: state.numbers.map(
        (i) => (i % 2 === 0 ? i : 0))];

看起来这个reducer的状态有不同的属性,其中一个是numbers

也许你想这样做:

case TURN_EVEN:
  return Object.assign(
    {},
    state,
    { numbers: state.numbers.map(i => (i % 2 === 0 ? i : 0)) }
  );

我还没有看到你的减速器的其余部分,所以也许我没有足够的上下文但是我鼓励你尝试为状态的每个属性制作一个减速器,其中一个{{1然后使用combineReducers to combine them into one。小功能更容易处理。

如果你这样做了,那么你可以使用这样的缩减器来表示数字:

numbers