useEffect用法总结(转)

本文详细介绍了React Hooks中的useEffect,包括模拟组件生命周期的场景:仅初始化执行、仅更新执行、初始化和更新都执行以及卸载执行。同时,讨论了如何执行异步函数,并解释了useEffect的执行顺序和最佳实践。通过实例展示了如何正确使用和理解useEffect。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

原文地址:useEffect用法总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值