行而不辍,未来可期
概念:
useEffect(()=>{
//在此可以执行任何带副作用的操作
return ()=>{//在组件卸载前执行
//在此做一些收尾工作,比如清除定时器
}
},[setValue])//如果指定的是[],回调函数只会在第一次render()后执行
可以把useEffect Hook 看做如下三个函数的组合:
componentDidMount()
componentDidUpdate()
componentWillUnmount()
useEffect return 执行的时机
useEffect是在render结束之后才执行的
使用useEffect创建的变量,当父组件发生变化时,会造成重新render,包括子组件的销毁,子组件的重建,父组件的重建。
每次重新渲染,都会导致原组件(子组件)的销毁和重建。
重点:
1.首次渲染,不会执行useEffect中的return
2.变量修改后,导致重新render,会先执行useEffect中的return,再执行useEffect内除了return部分代码
3.return内的回调,可以用来清理遗留垃圾,比如定时器等占用资源的东西