我知道我不应该改变输入,而应该克隆对象来改变它。我遵循在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 )]
使用@ AR7: 现在使用slice而不是splice以便不使输入发生变化-这是可行的方法还是更简洁的方法?