概述
-
ref是通过一个中间对象RefImpl持有数据,并通过重写它的set和get方法实现数据劫持的,本质上依旧是通过Object.defineProperty 对RefImpl的value属性进行劫持。
-
reactive则是通过Proxy进行劫持的。Proxy无法对基本数据类型进行操作,进而导致reactive在面对基本数据类型时的束手无策。
ref 对基本数据类型,使用Object.defineProperty 进行数据劫持监听,对对象数据使用value包装proxy对象进行监听劫持数据
reactive 监听的对象数据需要使用Object.assign 的方式进行复制,或者对子属性直接赋值
如果直接重新赋值reactive变量的话,变量会失去响应式。
ref的value无论对象还是基本数据类型,重新赋值都能实现响应式,所以一般推荐ref 监听对象数据,可以直接赋值。
前端工程师、程序员