我不明白为什么以下操作中的状态发生了变化,即使未调用dispatch()函数也是如此。即使response.errors已满,状态也会发生变化。
PS:状态似乎在地图功能结束时更新。
export function updateHierarchies(){
return function(dispatch, getState){
let hierarchies = getState().hierarchies.hierarchies
let hierarchyToEdit = getState().hierarchies.hierarchyToEdit
let hierarchiesToUpdate = hierarchies[`level_${hierarchyToEdit.level}`].hierarchies
hierarchiesToUpdate.map(function(hierarchy, index) {
if(hierarchy.id === hierarchyToEdit.id){
hierarchiesToUpdate[index] = hierarchyToEdit
}
});
let newHierarchies = hierarchies
newHierarchies[`level_${hierarchyToEdit.level}`].hierarchies = hierarchiesToUpdate
put("/admin/hierarchies.json", {hierarchy: hierarchyToEdit}).then((response) => {
console.log(response)
if(response.errors){
alert(response.errors);
} else {
dispatch(saveHierarchy(newHierarchies));
}
})
}
}
答案 0 :(得分:2)
因为你正在改变这一行的陈述:
hierarchiesToUpdate[index] = hierarchyToEdit
hierarchiesToUpdate
是对你所在州内部财产的引用。
您可以通过创建具有相同值的新数组来阻止它成为引用:
let hierarchiesToUpdate = [...hierarchies[`level_${hierarchyToEdit.level}`].hierarchies]