redux如何修改数组的某一项

假设我redux的state中有一个数组lists

lists: [{text: 'one', show: false}, {text: 'two', show: false}, {text: 'three', show: false}]

现在我想修改其中一个(假设第二个)的数据

dispatch({
  type: 'CHANGE_SHOW_STATE',
  index: 1,
  show: true
})

那在reducer中我应该如何修改数组,而不影响原来的数据?

const reducers = (state, action) => {
  case 'CHANGE_SHOW_STATE': ???
}

求???解答

阅读 11.4k
2 个回答
const reducers = (state, action) => {
  case 'CHANGE_SHOW_STATE': {
    const { lists } = state
    lists[action.index].show = action.show;
    return {
       ...state,
       lists
    }
  }
}
const reducers = (state, action) => {
  case 'CHANGE_SHOW_STATE': {
    const { lists } = state
    const updatedItem = xxx
    const updatedLists = [
       ...lists.slice(0, 1),
       updatedItem,
       ...lists.slice(2),
    ]
    return {
       ...state,
       lists: updatedLists,
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题