vue3中 ref 和 reactive 的区别介绍

ref 和 reactive 区别

refreactive 都是用来定义响应式数据的。

ref允许我们创建一个任意类型的响应式的ref对象,在使用时需要带上.value
在模板中使用ref对象时,假如ref位于顶层,就不需要使用value,它会自动解包
但如果ref对象是作为一个属性声明于对象之中,在模板中进行运算时仍然要使用.value

通俗理解 refreactive 都是用来定义响应式数据的 reactive更推荐去定义复杂的数据类型 ref 更推荐定义基本类型

refreactive 本质我们可以简单地理解为ref是对reactive的二次包装, ref定义的数据访问的时候要多一个.value

使用ref定义基本数据类型,ref也可以定义数组和对象

ref操作数据需要.valuetemplate模板中不需要

reactive都不需要.value

reactive() 创建的响应式对象,整个对象是响应式的,而对象里的每一项都是普通的值,当你把它用展开运算符展开后,整个对象的普通值都不是响应式的

而用 ref() 创建的响应式的值,本身就是响应式的,并不依赖于其他对象

所以需要展开 reactive() 创建的响应式对象,又不想让他们失去响应式特点的时候,就需要用 toRefs() 将它进行转换

通常使用reactive()来创建一个响应式的对象或数组,这样的对象或数组状态都是默认深层响应式的,无论嵌套多深,都能跟踪到。
但他也有局限性,就是只对 对象类型有效,对基本数据类型无效
并且假如用一个新对象替换了原来的旧对象,那么原来的旧对象会失去响应性

两者区别:

1、ref多用来定义基本数据类型(也可以定义对象,内部会自动通过reactive转为代理对象),而 reactive只能用来定义对象数组类型

2、ref操作数据需要.valuereactive操作数据不需要.value

3、ref通过Object.defineProperty()的get和set来实现响应式, reactive通过Proxy来实现响应式,并通过Reflect操作源对象内部的数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值