useEffect 依赖的 state 初始化算变化吗

Posted by CodingWithAlice on July 28, 2025

useEffect 依赖的 state 初始化算变化吗

总结:state 初始化是否算“变化”?

  • 不算。useState(0) 的初始赋值是同步的,useEffect 只是在挂载后检查依赖时发现 count 存在(值为 0) -> 但原本 挂载后, useEffect 的副作用会被执行一次,因此只执行一次

1、依赖项为 空数组

  • 组件挂载(初次渲染)后,立即执行一次(类似于 componentDidMount)
useEffect(() => {
    callbakc() // 只执行一次
}, []) 

2、依赖项为父级传递的 props

  • 组件挂载后,立即执行一次
  • props.status 变化后,触发执行一次
    • undefined 到初始值的 首次赋值也会触发执行
useEffect(() => {
    callbakc()
}, [props.status]) // 依赖 props.status

3、依赖项为 当前组件的 state

  • 组件挂载后,立即执行一次
  • count 改变,触发执行一次
    • state初始赋值不算作“变化”,但会触发首次副作用(因为 useEffect 在挂载后总会运行一次)
const [count, setCount] = useState(0);
useEffect(() => {
    callbakc()
}, [count])