修改数组对象的元素专有性时,Redux存储不会更新

时间:2019-09-27 01:48:18

标签: javascript arrays reactjs redux

我有以下代码

case 'COMPLETE_TODO' :
state.todos[state.todos.findIndex((obj => obj.id == action.value))].status = "COMPLETED"
return {
   ...state,
   todos: state.todos
}

我觉得数组不会被当作修改后的数组,因为只是更新了单个元素的属性。

有什么主意吗?

谢谢

1 个答案:

答案 0 :(得分:2)

请勿更改状态 ,复制状态,然后对其进行操作

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))