useEffect的函数需要返回一个cleanup的清除函数或者undefined。而当我们使用await、async的时候,会默认返回一个Promise,所以我们不能在useEffect函数中使用async
import React, { useEffect,useState } from 'react'const Func=()=>{let [count,setCount]= useState(0)const clickHandle=()=>{setCount(count+1)}//相当于componentDidMount componentDidUpdateuseEffect(()=>{console.log('componentDidMount componentDidUpdate')})//相当于componentDidMoutuseEffect(()=>{console.log('componentDidMount')},[])//相当于componentDidMout和count值发生改变useEffect(()=>{console.log("修改了count")var time=setInterval(()=>{console.log("定时器执行")},1000)//这里返回了一个函数,在里面可以进行清除定时器的操作return ()=>{time&&clearInterval(time)time=null}},[count])return (<div><h4>当前count是:{count}</h4><button onClick={clickHandle}>点我修改count</button></div>)}export default Func
在effect中可以返回一个函数,在里面进行清除定时器的操作
