vue3响应式原理
vue3响应式原理是借助es6的proxy代理和reflect反射结合使用
proxy可以检测到各种操作变化,使用reflect操作代理对象。相比于vue2的object.defineproperty检测的范围更广。
至于为什么要用reflect来操作对象。一是官方有意将object的一些方法移植到reflect上。二是用reflect写底层原理的框架会更加健壮,用原生的object方法如果出现报错会终止js线程运行,但是reflect不会。
vue3常用组合式api
- reactive和ref
两者都是把数据变成响应式,但是一般ref用于基本数据类型,reactive用于对象数据类型
ref也可以用于对象数据类型,但是ref实现响应式原理同vue2一样,都是用object.defineproperty实现的。如果传入对象数据类型,ref底层也会借助reactive。
ref操作数据需要.value,模板读取不需要.value。reactive都不需要reactive
- toRef和toRefs
用于取值,把响应式数据暴露给模板使用