vue composition和react hook虽然有同样的逻辑组合功能,但是有如下区别:
- react在每次组件更新时,会重复调用hook,这带来了一些问题,比如hook必须顶层使用,以使每次渲染hook调用顺序相同,如果没有提供正确依赖,hook中的变量就不能使用正确的变量值,每次都是初始值。而vue只调用setup一次,不用担心闭包变量问题,composition api调用也和调用顺序无关。
- 很多不需要更新的组件依然更新,需要使用useMemo,和useCallback手动给组件传递正确的依赖,才能优化更新频率。vue在计算属性和watchers中能自动收集依赖,无序手动传递正确依赖。vue也无需手动缓存函数来避免子组件更新,不需要手动优化。
- react不能及时使用最新状态,需要通过useRef或者setState传递函数才能使用。