我知道我不应该改变输入,而应该克隆对象来改变它。我遵循在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()
})
但这改变了输入状态对象-即使我要返回一个新对象,这也是禁止的吗?
您可以使用数组过滤器方法从数组中删除特定元素,而无需更改原始状态。
在您的代码上下文中,它看起来像这样: