从React Hook
的实现角度看,React Hook
是根据useState
调用的顺序来确定下一次重渲染时的state
是来源于哪个useState
,所以出现了以下限制
- 不能在循环、条件、嵌套函数中调用
Hook
- 必须确保总是在你的
React
函数的顶层调用Hook
-
useEffect
、useMemo
等函数必须手动确定依赖关系
而Composition API
是基于Vue
的响应式系统实现的,与React Hook
的相比
-
Composition API
声明在setup
函数内,一次组件实例化只调用一次setup
,而React Hook
每次重渲染都需要调用Hook
,使得React
的GC
比Vue
更有压力,性能也相对于Vue
来说也较慢 -
Compositon API
的调用不需要顾虑调用顺序,也可以在循环、条件、嵌套函数中使用 - 响应式系统自动实现了依赖收集,进而组件的部分的性能优化由
Vue
内部自己完成,而React Hook
需要手动传入依赖,而且必须必须保证依赖的顺序,让useEffect
、useMemo
等函数正确的捕获依赖变量,否则会由于依赖不正确使得组件性能下降
虽然Compositon API
看起来比React Hook
好用,但是其设计思想也是借鉴了React Hook
网友评论