我知道我不应该改变输入,应该克隆对象来改变它.我遵循在redux启动项目中使用的约定,该项目使用:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
Run Code Online (Sandbox Code Playgroud)
添加项目 - 我使用spread来将项目附加到数组中.
删除我用过:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
Run Code Online (Sandbox Code Playgroud)
但是这会改变输入状态对象 - 即使我返回一个新对象,这是否被禁止?