Javascript 修改数组对象的元素属性时,Redux存储未更新
我有下面的代码Javascript 修改数组对象的元素属性时,Redux存储未更新,javascript,arrays,reactjs,redux,Javascript,Arrays,Reactjs,Redux,我有下面的代码 case 'COMPLETE_TODO' : state.todos[state.todos.findIndex((obj => obj.id == action.value))].status = "COMPLETED" return { ...state, todos: state.todos } 我觉得数组没有被当作修改过的数组,因为只有一个元素的属性被更新了 有什么想法吗 谢谢不要改变状态,复制状态然后对其执行操作 case 'COMPLETE_TOD
case 'COMPLETE_TODO' :
state.todos[state.todos.findIndex((obj => obj.id == action.value))].status = "COMPLETED"
return {
...state,
todos: state.todos
}
我觉得数组没有被当作修改过的数组,因为只有一个元素的属性被更新了
有什么想法吗
谢谢不要改变状态,复制状态然后对其执行操作
case 'COMPLETE_TODO' :
return {
...state,
todos: state.todos.map(obj=> ({...obj, status: obj.id == action.value ? "COMPLETED" : obj.status}))
}
map
创建一个新数组,..
扩展语法创建一个浅拷贝,如果对象比一个级别更深,那么应该进行深克隆
对于深度克隆,您可以使用
let deepCopy = JSON.parse(JSON.stringify(state.todos))
不要改变状态,复制状态,然后对其执行操作