首页 > 解决方案 > 使用 React useEffect 进行清理

问题描述

好的,所以我通常理解我遇到的错误。

“无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 useEffect 清理函数中的所有订阅和异步任务。”

我知道我需要按照在 useEffect 函数中添加已安装组件的方式做一些事情。实际上,我不太确定如何用我正在做的事情来实现它。

useEffect(() => {
        fetchShippingCountries(checkoutToken.id)
        
    }, []);

    useEffect(() => {
        if (shippingCountry) fetchSubdivisions(shippingCountry);
    }, [shippingCountry]);

    useEffect(() => {
        if (shippingSubdivision) fetchShippingOptions(checkoutToken.id, shippingCountry, shippingSubdivision);
    }, [shippingSubdivision]);

我做了一些研究,这似乎是我需要遵循的形式,但它对我不起作用。

useEffect(() => {
  let mounted = true;

  fetchItems().then((newItems) => {
    if (mounted) {
      setItems(newItems);
    }
  });

  return () => {
    mounted = false;
  };
}, []);

标签: javascriptreactjsreact-hooksuse-effect

解决方案


推荐阅读