最佳答案
我知道我不应该变异输入,应该克隆对象来变异它。我遵循了一个 redux 启动项目中使用的惯例,它使用:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
用于添加一个项目-我得到了使用传播来追加数组中的项目。
删除我使用:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
但是这会使输入状态对象发生变化——即使我返回了一个新对象,这也是被禁止的吗?