react hook 中useEffect返回的函数是在什么时候执行

文章中看到的:

通常,组件卸载时需要清除 effect 创建的诸如订阅或计时器 ID 等资源。要实现这一点,useEffect 函数需返回一个清除函数。以下就是一个创建订阅的例子:
useEffect(() => {
  const subscription = props.source.subscribe();
  return () => {
    // 清除订阅
    subscription.unsubscribe();
  };
});
为防止内存泄漏,清除函数会在组件卸载前执行。另外,如果组件多次渲染(通常如此),则在执行下一个 effect 之前,上一个 effect 就已被清除。在上述示例中,意味着组件的每一次更新都会创建新的订阅。若想避免每次更新都触发 effect 的执行,请参阅下一小节。

我的问题是,这个清除订阅的函数会在什么时候执行,是执行完当前effect就立即执行返回的函数还是执行下一个effect之前执行上一个effect返回的函数?

已解决 悬赏分:60 - 解决时间 2021-11-27 22:56
反对 0举报 0 收藏 0

回答1

最佳
  • @
    执行当前 effect 之前对上一个 effect 进行清除

    官网有详细说明的 传送门

    支持 0 反对 0 举报
    2021-11-27 06:19