我知道我不应该改变输入并应该克隆对象来进行修改。我遵循了一个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()
})
但这会改变输入的状态对象——即使我返回一个新对象,这也是被禁止的吗?
items: [...state.items.slice(0, action.payload.value), ...state.items.slice(action.payload.value + 1 )]
这样做是否正确?或者有更简洁的方法吗? - CWright