Redux - 在reducer中返回数组而不是对象

时间:2017-11-29 16:00:11

标签: reactjs react-redux

我尝试在页面上进行更改,一旦addListItem运行了一个名为" list"的数组。这实际上是一个redux状态,需要更新。我设法更新它,但我返回一个对象而不是数组。我需要返回一个数组,但我不知道如何重构代码来实现它。

/**
 * Add Item
 */
case 'playlist/addListItem_success': {
  return {
    ...state,
    list: {
      ...state.list,
      [action.meta.position]: {
        ...state.list[action.meta.position],
        status: true
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

要返回数组,您必须使用数组扩展语法(例如[...someArray])而不是对象传播,但您无法使用它来更新特定索引。使用map,您可以优雅地表达您的需求:

return {
  ...state,
  list: state.list.map((e, i) => i === action.meta.position ? {...e, status: true} : e)
};