Javascript 如何将数据添加到将动态创建的redux存储阵列中?

Javascript 如何将数据添加到将动态创建的redux存储阵列中?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在开发嵌套todo应用程序,我的商店中有todo数组。当我分派一个操作时,将创建{task:todo,id:id,singletodo:[]}。我已经根据id完成了路由,每当我点击任何todo时,它都会将我带到那个特定的todo。我已经创建了另一个reducer,它将主todo的新子todo添加到singletodo数组中。我试过各种方法,但似乎都不管用。我在代码段中附加代码 减速器: ADD_TODO:(状态、操作)=>{ state.todos.push(action.payload);

我正在开发嵌套todo应用程序,我的商店中有todo数组。当我分派一个操作时,将创建{task:todo,id:id,singletodo:[]}。我已经根据id完成了路由,每当我点击任何todo时,它都会将我带到那个特定的todo。我已经创建了另一个reducer,它将主todo的新子todo添加到singletodo数组中。我试过各种方法,但似乎都不管用。我在代码段中附加代码

减速器:
ADD_TODO:(状态、操作)=>{
state.todos.push(action.payload);
},
添加单个待办事项:(状态、操作)=>{
state.todos.singletodo.push(action.payload);

},
我解决了这个问题。我在减速器和调度操作中进行了更改

更新的减速器:
ADD_TODO:(状态、操作)=>{
state.todos.push(action.payload);
},
添加单个待办事项:(状态、操作)=>{
state.todo.map((todo)=>{
if(todo.id==action.payload.id){
todo.singletodo.push(action.payload)
}
})

},
在legacy Redux中,就像您在这里写的一样,您不允许对Redux管理的数据使用
.push
和其他变异函数(请参阅)。 这是redux的三个核心原则之一(请参阅),并且会导致许多错误,如react而不是CorerCtrl等


您必须编写更复杂的不可变更新逻辑,或者——我建议您——遵循官方的redux教程(at)并学习现代redux,它为您抽象了“不可变”部分,并允许您使用变异逻辑。

请创建一个,在我的应用商店中使用类似codesandbox
todos数组的东西
那么为什么要使用
todos.singletodo
?如何将数据推送到singletodo数组中?todos数组的每个对象都包含singletodo数组,我试图在singletodo数组中为相应的对象或相应的todo1推送子ToDo。不要改变状态,即不要使用
push
state.todos.push
)2。不要使用
.map
。使用
forEach
进行循环(当您试图查找匹配的项目时,请尝试
.find
)。