为什么国家在改变?

时间:2018-02-15 14:50:44

标签: reactjs redux react-redux

我不明白为什么以下操作中的状态发生了变化,即使未调用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));
     }
   })
  }
}

1 个答案:

答案 0 :(得分:2)

因为你正在改变这一行的陈述:

hierarchiesToUpdate[index] = hierarchyToEdit

hierarchiesToUpdate是对你所在州内部财产的引用。

您可以通过创建具有相同值的新数组来阻止它成为引用:

let hierarchiesToUpdate = [...hierarchies[`level_${hierarchyToEdit.level}`].hierarchies]