Reactjs 为什么国家在变化?
我不明白为什么以下操作中的状态会发生更改,即使没有调用dispatch()函数。即使response.errors已满,状态也会更改 PS:状态似乎在映射函数的末尾更新Reactjs 为什么国家在变化?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我不明白为什么以下操作中的状态会发生更改,即使没有调用dispatch()函数。即使response.errors已满,状态也会更改 PS:状态似乎在映射函数的末尾更新 export function updateHierarchies(){ return function(dispatch, getState){ let hierarchies = getState().hierarchies.hierarchies let hierarchyToEdit = getState(
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));
}
})
}
}
因为您正在这一行对语句进行变异:
hierarchystoupdate[index]=hierarchyToEdit
HierarchysToUpdate
是对州的内部属性的引用
通过创建具有相同值的新数组,可以防止其成为引用:
let hierarchiesToUpdate = [...hierarchies[`level_${hierarchyToEdit.level}`].hierarchies]
因为您正在这一行对语句进行变异:
hierarchystoupdate[index]=hierarchyToEdit
HierarchysToUpdate
是对州的内部属性的引用
通过创建具有相同值的新数组,可以防止其成为引用:
let hierarchiesToUpdate = [...hierarchies[`level_${hierarchyToEdit.level}`].hierarchies]
谢谢迪奥戈!我知道不应该对状态进行变异,但我认为只有在我做了层次结构[index]=hierarchyToEdit这样的事情时才会发生这种情况。我不知道“参考”和“副本”之间的区别。这很有帮助,谢谢。谢谢迪奥戈!我知道不应该对状态进行变异,但我认为只有在我做了层次结构[index]=hierarchyToEdit这样的事情时才会发生这种情况。我不知道“参考”和“副本”之间的区别。这很有帮助,谢谢。