【vue笔记】ref函数与reactive函数

ref函数

- 作用: 定义一个响应式的数据

- 语法: ```const xxx = ref(initValue)```

  - 创建一个包含响应式数据的<strong style="color:#DD5145">引用对象(reference对象,简称ref对象)</strong>。

  - JS中操作数据: ```xxx.value```

  - 模板中读取数据: 不需要.value,直接:```<div>{{xxx}}</div>```

- 备注:

  - 接收的数据可以是:基本类型、也可以是对象类型。

  - 基本类型的数据:响应式依然是靠``Object.defineProperty()``的```get```与```set```完成的。

  - 对象类型的数据:内部 <i style="color:gray;font-weight:bold">“ 求助 ”</i> 了Vue3.0中的一个新函数—— ```reactive```函数。

reactive函数

- 作用: 定义一个<strong style="color:#DD5145">对象类型</strong>的响应式数据(基本类型不要用它,要用```ref```函数)

- 语法:```const 代理对象= reactive(源对象)```接收一个对象(或数组),返回一个<strong style="color:#DD5145">代理对象(Proxy的实例对象,简称proxy对象)</strong>

- reactive定义的响应式数据是“深层次的”。

- 内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作。

两者的差别

从定义数据角度对比:

   -  ref用来定义:<strong style="color:#DD5145">基本类型数据</strong>。

   -  reactive用来定义:<strong style="color:#DD5145">对象(或数组)类型数据</strong>。

   -  备注:ref也可以用来定义<strong style="color:#DD5145">对象(或数组)类型数据</strong>, 它内部会自动通过```reactive```转为<strong style="color:#DD5145">代理对象</strong>。

-  从原理角度对比:

   -  ref通过``Object.defineProperty()``的```get```与```set```来实现响应式(数据劫持)。

   -  reactive通过使用<strong style="color:#DD5145">Proxy</strong>来实现响应式(数据劫持), 并通过<strong style="color:#DD5145">Reflect</strong>操作<strong style="color:orange">源对象</strong>内部的数据。

-  从使用角度对比:

   -  ref定义的数据:操作数据<strong style="color:#DD5145">需要</strong>```.value```,读取数据时模板中直接读取<strong style="color:#DD5145">不需要</strong>```.value```。

   -  reactive定义的数据:操作数据与读取数据:<strong style="color:#DD5145">均不需要</strong>```.value```。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值