Composition API 和 React Hooks 很像,区别是什么?

6 阅读1分钟

React Hooks

从 React Hooks 的实现角度看,React Hooks 是根据 useState 调用顺序来确定下一次重新渲染时的 state 是来源于哪个 useState ,所以出现以下限制:

  • 不能在循环、条件、嵌套函数中调用 Hooks。

  • 必须确保总是在你的 React 函数顶层调用 Hooks。

  • useEffect、useMemo等函数必须手动确定依赖关系。

Composition API

Composition API 是基于 Vue 的响应式系统实现的。

Composition API 与 React Hooks 相比:

  • 声明在 setup 函数内,一次组件实例化只调用一次 setup ,而 React Hooks 每次重新渲染都需要调用 Hooks,使得 React 的 GC 比 Vue 更有压力,性能相对于 Vue 会比较慢。

  • Composition API 的调用不需要考虑调用顺序,也可以在循环、条件、嵌套函数中使用。

  • 响应式系统自动实现依赖收集原理,所以,组件部分的性能优化由 Vue 内部自己完成。

  • React Hooks 需要手动传入依赖,且必须保证依赖的顺序,让 useEffect、useMemo等函数正确的捕获依赖变量,否则会由于依赖不正确使得组件性能下降。

虽然 Composition API 看起来比 React Hooks 好用,但其设计思想也是借鉴 React Hooks 的。

GC(Garbage Collection) ‌是一种自动内存管理的机制,用于识别和回收程序中不再使用的内存空间,以防止内存泄漏,提高内存使用效率。