【vue3|第5期】Vue3响应式数据:ref 与 reactive 的深入解析

日期:2024年5月31日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006



在这里插入图片描述


一、前言

Vue3 中,响应式数据是构建动态 UI 的基石。Vue3 引入了 组合式API(即 Composition API),并提供了 refreactive 两个函数来创建响应式数据。本文将详细介绍 refreactive 的使用方法、适用场景、区别以及它们之间的联系。

二、ref

refVue3 中用于创建响应式引用(reference)的函数。它返回一个具有 value 属性的对象,该属性是响应式的。可以通过 .value 来访问或修改这个值。

import { ref } from 'vue';

const count = ref(0); // 创建一个响应式引用,初始值为 0

console.log(count.value); // 输出:0

count.value++; // 修改引用的值
console.log(count.value); // 输出:1

(2-1)特性

  • ref 主要用于创建基本类型(如 numberstringboolean 等)的响应式数据。
  • ref 返回的是一个对象,而不是如数字、字符串等,因此你需要通过 .value 来访问或修改它的值。
  • 在模板中,Vue 会自动解包 ref 的值,所以你不需要写 .value

(2-2)使用场景

  • 当你需要一个单独的响应式值时,比如一个计数器或者一个表单输入字段的值。
  • Composition API 中,ref 是一个非常常见的选择,因为它可以与 setup 函数中的其他逻辑很好地组合。

三、reactive

reactive 函数用于创建复杂数据结构(如对象、数组等)的响应式对象。,该对象的属性都是响应式的。

import { reactive } from 'vue';

const state = reactive({
  count: 0,
  name: 'Vue 3'
});

console.log(state.count); // 输出:0
console.log(state.name); // 输出:'Vue 3'

state.count++; // 修改对象的属性值
console.log(state.count); // 输出:1

(3-1)特性

  • reactive 主要用于创建复杂类型(如对象、数组等)的响应式数据
  • 返回的对象本身就是响应式的,你可以直接访问或修改它的属性。
  • 在模板中,你可以像访问普通对象属性一样访问 reactive 对象的属性。

(3-2)使用场景

  • 当你需要一个具有多个响应式属性的对象时,比如一个包含多个状态或属性的组件状态。
  • Options API 中,你可能已经习惯了使用 data 函数返回对象来管理状态,而 reactive 可以看作是这种模式的扩展,用于 Composition API

四、ref 与 reactive 的区别与联系

(4-1)区别

内容refreactive
用途主要用于创建基本类型的响应式数据用于创建复杂类型的响应式数据。
返回值一个具有 value 属性的对象直接返回响应式对象
模板使用自动解包 ref 的值对象属性则可以直接访问
内部实现创建一个具有单个 .value 属性的响应式对象通过使用 ES6Proxy 对象来创建一个代理,该代理可以拦截对象的所有操作。
性能考量一般情况,性能更优对象的每个属性需要进行递归转换

(4-2)联系

  • 响应式原理:两者都基于 Vue3 的响应式系统,当数据发生变化时,视图会自动更新。
  • 组合使用:在实际开发中,可以根据需要组合使用 refreactive。例如,可以在 reactive 对象的属性中使用 ref
  • 互操作性:Vue 3 提供了 toRefs 和 toRef 函数,允许我们将 reactive 对象转换为 ref,反之亦然,这增加了两者之间的互操作性。

五、总结

refreactiveVue3 中创建响应式数据的两个重要函数。它们各有特点,适用于不同的场景。通过深入理解它们的用法和区别,可以更加灵活地构建 Vue3 应用程序的响应式数据层


参考文章:


版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/139349923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Commas.KM

码路共同进步,感恩一路有您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值