首页 > 解决方案 > 警告:无法对未安装的组件执行 React 状态更新,方法只需要运行一次

问题描述

我正在尝试在组件安装时获取广告商列表,但这会导致内存泄漏,有什么建议吗?我将不胜感激:)

 useEffect(() => {
    const fetchData = async () => {
      const list = await Api.listAdvertisers();
      setAdvertisers(list);
    };
    fetchData();
  }, []);

标签: javascriptreactjsreact-hooks

解决方案


您可以在主范围内声明 fetchData 函数,并且可以通过在 useEffect 范围内声明 didMount 变量来检查该函数是否被调用。

const didMount = useRef(false);

const fetchData = async () => {
      const list = await beeswaxService.listAdvertisers();
      setAdvertisers(list);
      return;
    };

useEffect(() => {
    if(!didMount.current){
       didMount.current = true;
       fetchData();
    }
    
  }, []);

推荐阅读