vue3中ref和reactive的区别

ref

接受一个内部值并返回一个响应式且可变的 ref 对象,有一个 .value 属性,可以通过其读取/修改对象的值。

const active = ref(false)

console.log(active.value) // false

active.value = true

console.log(active.value) // true

为ref值指定泛型参数覆盖默认推断类型:

const active = ref<boolean> (false)

当值的类型不确定时,将ref 转换为 Ref<T>

const data = ref(params) as Ref<T>

reactive

创建一个响应式对象,与ref不同的是,reactive 接受的参数是一个对象,可以使用toRef(infoObj)为对象中的每一个属性创建一个ref, 它可以保持对原属性的响应式链接。

const infoObj = reactive({
name:'Alex',
age: '22'
})

console.log('infoObj', infoObj)

// 第二个参数代表对name属性创建ref; 对所有属性创建ref 使用toRefs(),结果对象的每个 property 都是指向原始对象相应 property 的 ref。
const infoName = toRef(infoObj, 'name')

infoName.value = 'Mary'

console.log('name', infoName.value, infoObj.name) // name Mary Mary

ref 和 reactive:

相同:创建一个响应式对象。

不同:

  • reactive 接受入参必须是对象形式,而 ref 可以是对象形式,也可以是一个单值。
  • 读取/赋值不一样,ref 必须从.value 属性中读取值
  • ref存在异步问题、

 

toRef 和 toRefs :

toRefs 只会为源对象中包含的 property 生成 ref, 将对象转换为普通对象,且不丢失对源对象的响应式链接,即修改源对象属性值,生成的新的普通对象的对应属性值(ref)也会修改,反之亦然。

toRef 为特定的 property 创建 ref, 同样也会保持响应式链接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值