由于某种原因双重 redux 调度

时间:2021-05-13 02:19:51

标签: javascript reactjs redux react-redux

每次我删除 useEffect 并删除一项时,操作 listResidents() 都会出于某种原因运行两次,这只是一个示例,即使在其他组件中也经常发生,我不知道为什么会这样。我试图自己解决它,但每次我删除或做某事时都没有调度。

_HIVE_DEFAULT_PARTITION__

1 个答案:

答案 0 :(得分:2)

如果 successDelete 变回 false - 也许这就是您调度 listResidents() 时发生的情况? - 那就是为什么。

这将修复它:

  useEffect(() => {
    if(!successDelete) return;
    dispatch(listResidents());
  }, [dispatch, successDelete]);

^ 编辑:此不会修复它,因为现在您不会在挂载时分派 listResidents

因此,在删除后执行 dispatch listResidents 的效果是一种粗暴的方式(但在 mount 上没问题)。最好在删除处理程序中进行。根据您是否使用 thunks,您或许可以这样做:

  const deleteHandler = async id => {
    await dispatch(deleteResident(id));
    dispatch(listResidents())
  };

并完全摆脱效果中的 successDelete 依赖。

或者,也许只是在 thunk 中分派一个 listResidents(同样,如果您使用的是 thunk),它会执行删除操作并将其完全保留在组件代码之外。