useEffect用法总结
1. 模拟生命周期
1.1 仅初始化执行,模拟 componentDidMount
依赖空数组,由于依赖为空,不会变化,只执行一次
useEffect(() => { console.log('hello world') }, [])
1.2 仅更新执行,模拟 componentDidUpdate
依赖为具体变量,每次变量变化,都执行一次
useEffect(() => { console.log('info: ', name, age) }, [name, age])
1.3 初始化和更新都执行,模拟 componentDidMount 和 componentDidUpdate
没有依赖,与依赖为空不同,这个每次都会执行
useEffect(() => { console.log('every time') })
1.4 卸载执行,模拟 componentWillUnmount
在useEffect中返回一个函数,则在组件卸载时,会执行改函数
useEffect(() => { const id = setInterval(() => { setCount(c => c + 1); }, 1000); return () => clearInterval(id); }, []);
2. 执行async函数
useEffect的回调函数,不能是async,可以将async写在回调里面,单独调用
//不可以 useEffect(async()=>{ const res = await fetchData(id) setData(res.data) },[id]) //推荐 useEffect(()=>{ const getData = async() => { const res = await fetchData(id) setData(res.data) } getData() },[id])
3. useEffect执行顺序
useEffect的执行时机,是在react的commit阶段之后。
当父子组件都有useEffect,则先执行子组件的useEffect,再执行父组件的useEffect
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-04-25 前端鉴权的几种方式
2020-04-25 TLS/SSL握手过程