joken-前端工程师

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

概述

  • ref是通过一个中间对象RefImpl持有数据,并通过重写它的set和get方法实现数据劫持的,本质上依旧是通过Object.defineProperty 对RefImpl的value属性进行劫持。

  • reactive则是通过Proxy进行劫持的。Proxy无法对基本数据类型进行操作,进而导致reactive在面对基本数据类型时的束手无策。

ref 对基本数据类型,使用Object.defineProperty 进行数据劫持监听,对对象数据使用value包装proxy对象进行监听劫持数据

reactive 监听的对象数据需要使用Object.assign 的方式进行复制,或者对子属性直接赋值
如果直接重新赋值reactive变量的话,变量会失去响应式。

ref的value无论对象还是基本数据类型,重新赋值都能实现响应式,所以一般推荐ref 监听对象数据,可以直接赋值。

posted on 2024-08-01 21:57  joken1310  阅读(30)  评论(0编辑  收藏  举报