Vue3 中组合式API 与 React Hooks 的区别是?

发布时间 2023-06-01 17:12:48作者: 小短腿奔跑吧

Vue3 中组合式API 与 React Hooks 的区别是?

1. 调用顺序

  Vue3:组合式API不限制调用顺序,可以有条件地进行调用

  React-hooks:有调用顺序的限制,不可以写在条件分支中

  查看源码分析:例如:useState定义的变量会放在一个数组中,在条件分支中需要根据条件定义变量放入数组,若出现某个变量某种情况定义,或者某种情况不定义,则由数组下标访问数组变量值时,出现异常

2. 性能优化

  Vue3:

    a) setup 更小的生产包体积

    b) setup 无需担心闭包变量的问题

    原因:<script setup> 中的代码位于同一作用域。不像选项式 API 需要依赖 this 上下文对象访问属性,被编译的模板可以直接访问 <script setup> 中定义的变量,无需从实例中代理。这对代码压缩更友好,因为本地变量的名字可以被压缩,但对象的属性名则不能。

    c) 无需手动缓存回调函数来避免组件更新

    d) 响应系统自动捕获依赖

  React-hooks:

    a) 担心闭包变量的问题:定义的变量会被钩子函数闭包捕获

    b) 使用 useMemo 和 useCallback 进行避免不必要的dom更新,提升性能优化 (不好)

    c) 需要手动声明依赖