React Hooks 的本质

相关概念:react

Hooks 不是生命周期里的回调函数,而是一组让函数组件接入 React 能力的函数接口。

核心定义

Hooks 让函数组件可以直接表达:

  • 状态
  • 副作用
  • 上下文
  • 引用
  • 性能优化

不要把 Hooks 理解成生命周期替身

useEffect 的表现和类组件生命周期有相似处,但它的语义不是“模拟生命周期”,而是“声明副作用和清理关系”。

useEffect(() => {
  const timer = setInterval(tick, 1000)
 
  return () => clearInterval(timer)
}, [])

这段代码表达的是:

  • 副作用要在渲染提交后执行
  • 依赖不变时不重复建立
  • 作用域销毁时需要清理

执行位置

Hooks 本身在组件函数执行期间被调用。

但像 useEffect 这样的 Hook,真正传入的副作用逻辑会在提交阶段之后运行。

一个判断

如果脑子里想的是“这个 Hook 对应哪个生命周期”,理解通常还停在类组件迁移视角。

更贴近 React 的理解方式是:

这个 Hook 在声明哪种状态关系、依赖关系或副作用关系?

结论

Hooks 的核心价值不是替代生命周期,而是把状态和副作用变成函数组件里的显式结构。