每次我删除 useEffect 并删除一项时,操作 listResidents() 都会出于某种原因运行两次,这只是一个示例,即使在其他组件中也经常发生,我不知道为什么会这样。我试图自己解决它,但每次我删除或做某事时都没有调度。
_HIVE_DEFAULT_PARTITION__
答案 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),它会执行删除操作并将其完全保留在组件代码之外。