Reactjs 使用Effect cleanup函数防止卸载的组件更新异步

Reactjs 使用Effect cleanup函数防止卸载的组件更新异步,reactjs,asynchronous,react-hooks,components,Reactjs,Asynchronous,React Hooks,Components,我是新手。当我从一个区段跳到另一个区段时,会显示这个警告。不用等待它完成安装 js:1警告:无法对未安装的服务器执行React状态更新 组成部分。这是一个no op,但它表明您的内存中存在内存泄漏 应用若要修复,请取消所有订阅和异步任务 在useEffect清理函数中。 在FadeItems中(位于AboutSection.jsx:32) 在div中(由CardBody创建) 在CardBody中(大约在section.jsx:29处) 在div中(由卡创建) 卡片中(位于AboutSectio

我是新手。当我从一个区段跳到另一个区段时,会显示这个警告。不用等待它完成安装

js:1警告:无法对未安装的服务器执行React状态更新 组成部分。这是一个no op,但它表明您的内存中存在内存泄漏 应用若要修复,请取消所有订阅和异步任务 在useEffect清理函数中。 在FadeItems中(位于AboutSection.jsx:32) 在div中(由CardBody创建) 在CardBody中(大约在section.jsx:29处) 在div中(由卡创建) 卡片中(位于AboutSection.jsx:22) 在div中(在AboutSection.jsx:19处) 在AboutSection中(在About.jsx:9处) 在第节中(大约在.jsx:7处) 大约(由Context.Consumer创建)

以下是FadeItems的代码:

import React,{useState}来自“React”;
从“道具类型”导入道具类型;
从“reactstrap”导入{Fade};
常量FadeItems=(道具)=>{
const[count,setCount]=useState(0);
//const[mount,setMount]=useState(true);
//useffect(()=>{
////设置超时(()=>{
////let mounted=true
//如果(安装){
//mount=false;
//       }
//返回函数cleanup(){
//挂载=错误
//     }
////设置计数(0);
//   // }, 300)
//})//防止更新未安装的组件
const{text}=props;
返回(
{
text.map((语句、索引)=>(
=索引?真:假}
onEnter={()=>
设置超时(()=>{
集合计数(索引+1);
}, 2000)
}
onExiting={()=>setCount(-1)}
tag=“h5”
className=“mt-3”
键={index+100}
风格={{backgroundColor:'#282c34'}}
>
{语句}
))
}
);
};
FadeItems.propTypes={
text:PropTypes.string,
}.需要;

导出默认FadeItems
您需要清除
useffect的清除功能中设置的计时器

 const [mount, setMount] = useState(true);
   useEffect(() => {
      const timerId = setTimeout(() => {
        let mounted = true
         if (mount) {
           mount = false;
         }

      return () => {
         clearTimeout(timerId);
      }
   })

最佳实践是使用return()=>//清除函数或return()=>{return()=>//清除函数。}尝试这样做。但还是一样。