VUE3 组合式 API 中,ref 和 reactive 是两种核心的响应式数据处理方式

news2025/1/14 3:18:21

在 Vue 3 的组合式 API 中,refreactive 是两种核心的响应式数据处理方式,用于创建响应式对象。它们都使得数据变得响应式,当数据发生变化时,视图会自动更新。

1. ref

ref 用于创建一个响应式的基本数据类型(如字符串、数字、布尔值、null 等)或对象的引用。它会返回一个包含 .value 的对象。对 .value 进行修改时,视图会自动更新。

使用 ref
  • 用于创建一个简单的响应式数据。
  • ref 可以用于基本数据类型,也可以用于对象类型,但它的使用方式略有不同(需要通过 .value 来访问和修改)。
示例:
<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'

// 创建一个响应式变量 count
const count = ref(0)

// 定义一个方法来更新 count
const increment = () => {
  count.value++
}
</script>
解释:
  • count 是通过 ref(0) 创建的一个响应式数据。
  • count.value 是获取和修改这个响应式数据的方式。
  • 在模板中直接使用 count,Vue 会自动处理 count.value

2. reactive

reactive 用于创建一个响应式的对象或数组。与 ref 不同的是,reactive 创建的是一个深度响应式的对象,能够追踪对象的所有嵌套属性。你不需要访问 .value,可以直接使用对象的属性。

使用 reactive
  • 用于创建响应式对象。
  • 对象的嵌套属性也会变成响应式。
示例:
<template>
  <div>
    <p>{{ user.name }}</p>
    <button @click="changeName">Change Name</button>
  </div>
</template>

<script setup>
import { reactive } from 'vue'

// 创建一个响应式对象
const user = reactive({
  name: 'John',
  age: 30
})

// 修改对象的属性
const changeName = () => {
  user.name = 'Alice'
}
</script>
解释:
  • user 是通过 reactive 创建的响应式对象。
  • 可以直接访问和修改 user.nameuser.age,不需要 .value

区别:ref 与 reactive

特性refreactive
数据类型用于基本数据类型(数字、字符串、布尔值等)和对象用于对象、数组等复杂类型
修改方式通过 .value 访问和修改数据直接访问和修改对象的属性
响应性范围只能响应单一的值(基本类型、对象/数组的引用)创建深度响应式对象,自动响应对象内嵌的属性
适用场景基本数据类型、DOM 引用、对象引用(简易情况)对象和数组的深度响应式处理

选择使用 ref 或 reactive

  • 如果你只是处理一个简单的数据(如数字、字符串等),使用 ref
  • 如果你需要创建一个响应式对象或者数组,并且要跟踪其所有的嵌套属性,使用 reactive

注意:

  • reactive 创建的对象是深度响应式的,意味着对象中的嵌套属性会自动成为响应式。
  • ref 对于对象也是响应式的,但需要通过 .value 来访问和修改。
  • 如果你有一个对象并且希望直接使用其属性而不通过 .value,可以考虑使用 reactive

示例:结合使用 ref 和 reactive

你也可以在同一个组件中同时使用 refreactive,例如:

<template>
  <div>
    <p>{{ user.name }} - {{ count }}</p>
    <button @click="increment">Increment</button>
    <button @click="changeName">Change Name</button>
  </div>
</template>

<script setup>
import { ref, reactive } from 'vue'

// 创建一个响应式对象
const user = reactive({ name: 'John', age: 30 })

// 创建一个响应式数字
const count = ref(0)

// 定义方法修改数据
const increment = () => {
  count.value++
}

const changeName = () => {
  user.name = 'Alice'
}
</script>

在这个示例中,user 是一个响应式对象,而 count 是通过 ref 创建的响应式数字。两者可以并行使用,且视图会随着数据变化自动更新。

总结:

  • ref 适用于创建简单类型(如基本数据类型或单个对象的引用)的响应式数据。
  • reactive 适用于创建对象或数组的深度响应式数据。
  • 选择哪个取决于你的需求,简单数据用 ref,复杂数据(对象、数组等)用 reactive

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时序数据库InfluxDB—介绍与性能测试

目录 一、简述 二、主要特点 三、基本概念 1、主要概念 2、保留策略 3、连续查询 4、存储引擎—TSM Tree 5、存储目录 四、基本操作 1、Java-API操作 五、项目中的应用 六、单节点的硬件配置 七、性能测试 1、测试环境 2、测试程序 3、写入测试 4、查询测试 一…

计算机网络 (35)TCP报文段的首部格式

前言 计算机网络中的TCP&#xff08;传输控制协议&#xff09;报文段的首部格式是TCP协议的核心组成部分&#xff0c;它包含了控制TCP连接的各种信息和参数。 一、TCP报文段的结构 TCP报文段由首部和数据两部分组成。其中&#xff0c;首部包含了控制TCP连接的各种字段&#xff…

GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界

马萨诸塞州沃尔瑟姆-2025年1月6日-触觉智能技术领军企业Gelsight宣布&#xff0c;旗下Gelsight Mini视触觉传感器迎来凝胶触头的更新。经内部测试&#xff0c;新Gel凝胶触头耐用性提升40%&#xff0c;外观与触感与原凝胶触头保持一致。此次升级有效满足了客户在机器人应用中对设…

burpsiute的基础使用(2)

爆破模块&#xff08;intruder&#xff09;&#xff1a; csrf请求伪造访问&#xff08;模拟攻击&#xff09;: 方法一&#xff1a; 通过burp将修改&#xff0c;删除等行为的数据包压缩成一个可访问链接&#xff0c;通过本地浏览器访问&#xff08;该浏览器用户处于登陆状态&a…

【ASP.NET学习】ASP.NET MVC基本编程

文章目录 ASP.NET MVCMVC 编程模式ASP.NET MVC - Internet 应用程序创建MVC web应用程序应用程序信息应用程序文件配置文件 用新建的ASP.NET MVC程序做一个简单计算器1. **修改视图文件**2. **修改控制器文件** 用新建的ASP.NET MVC程序做一个复杂计算器1.创建模型&#xff08;…

Git 命令代码管理详解

一、Git 初相识&#xff1a;版本控制的神器 在当今的软件开发领域&#xff0c;版本控制如同基石般重要&#xff0c;而 Git 无疑是其中最耀眼的明珠。它由 Linus Torvalds 在 2005 年创造&#xff0c;最初是为了更好地管理 Linux 内核源代码。随着时间的推移&#xff0c;Git 凭借…

OpenCV实现基于交叉双边滤波的红外可见光融合算法

1 算法原理 CBF是*Cross Bilateral Filter(交叉双边滤波)*的缩写&#xff0c;论文《IMAGE FUSION BASED ON PIXEL SIGNIFICANCE USING CROSS BILATERAL FILTER》。 论文中&#xff0c;作者使用交叉双边滤波算法对原始图像 A A A&#xff0c; B B B 进行处理得到细节&#xff0…

项目实战--网页五子棋(用户模块)(1)

接下来我将使用Java语言&#xff0c;和Spring框架&#xff0c;实现一个简单的网页五子棋。 主要功能包括用户登录注册&#xff0c;人机对战&#xff0c;在线匹配对局&#xff0c;房间邀请对局&#xff0c;积分排行版等。 这篇文件讲解用户模块的后端代码 1. 用户表与实体类 …

机器学习之随机森林算法实现和特征重要性排名可视化

随机森林算法实现和特征重要性排名可视化 目录 随机森林算法实现和特征重要性排名可视化1 随机森林算法1.1 概念1.2 主要特点1.3 优缺点1.4 步骤1.5 函数及参数1.5.1 函数导入1.5.2 参数 1.6 特征重要性排名 2 实际代码测试 1 随机森林算法 1.1 概念 是一种基于树模型的集成学…

MySQL存储引擎、索引、索引失效

MySQL Docker 安装 MySQL8.0&#xff0c;安装见docker-compose.yaml 操作类型 SQL 程序语言有四种类型&#xff0c;对数据库的基本操作都属于这四种类&#xff0c;分为 DDL、DML、DQL、DCL DDL(Dara Definition Language 数据定义语言)&#xff0c;是负责数据结构定义与数据…

WPF基础(1.1):ComboBox的使用

本篇文章介绍ComboBox的基本使用。 本篇文章的例子实现的功能&#xff1a;后端获取前端复选框中的选项之后&#xff0c;点击“确定”按钮&#xff0c;弹出一个MessageBox&#xff0c;显示用户选择的选项。 文章目录 1. 效果展示2. 代码逻辑2.1 前端代码2.2 后端代码 1. 效果展…

前端炫酷动画--文字(二)

目录 一、弧形边框选项卡 二、零宽字符 三、目录滚动时自动高亮 四、高亮关键字 五、文字描边 六、按钮边框的旋转动画 七、视频文字特效 八、立体文字特效让文字立起来 九、文字连续光影特效 十、重复渐变的边框 十一、磨砂玻璃效果 十二、FLIP动画 一、弧形边框…

android 官网刷机和线刷

nexus、pixel可使用google官网线上刷机的方法。网址&#xff1a;https://flash.android.com/ 本文使用google线上刷机&#xff0c;将Android14 刷为Android12 以下是失败的线刷经历。 准备工作 下载升级包。https://developers.google.com/android/images?hlzh-cn 注意&…

25/1/12 嵌入式笔记 学习esp32

了解了一下位选线和段选线的知识&#xff1a; 位选线&#xff1a; 作用&#xff1a;用于选择数码管的某一位&#xff0c;例如4位数码管的第1位&#xff0c;第2位&#xff09; 通过控制位选线的电平&#xff08;高低电平&#xff09;&#xff0c;决定当前哪一位数码管处于激活状…

探秘block原理

01 概述 在iOS开发中&#xff0c;block大家用的都很熟悉了&#xff0c;是iOS开发中闭包的一种实现方式&#xff0c;可以对一段代码逻辑进行封装&#xff0c;使其可以像数据一样被传递、存储、调用&#xff0c;并且可以保存相关的上下文状态。 很多block原理性的文章都比较老&am…

【Docker】入门教程

目录 一、Docker的安装 二、Docker的命令 Docker命令实验 1.下载镜像 2.启动容器 3.修改页面 4.保存镜像 5.分享社区 三、Docker存储 1.目录挂载 2.卷映射 四、Docker网络 1.容器间相互访问 2.Redis主从同步集群 3.启动MySQL 五、Docker Compose 1.命令式安装 …

Bootstrap 前端 UI 框架

Bootstrap官网&#xff1a;Bootstrap中文网 铂特优选 Bootstrap 下载 点击进入中文文档 点击下载 生产文件是开发响应式网页应用&#xff0c;源码是底层逻辑代码&#xff0c;因为是要制作响应式网页&#xff0c;所以下载开发文件 引入 css 文件&#xff0c; bootstrap.css 和 …

Docker与微服务实战2-基础篇

1.学习一门新技术的理念 1.是什么 2.能干吗 3.去哪下载 4.怎么玩 5.永远的helloworld跑起来一次 AB法则 before 与 after 的对比 2.为什么会有Docker出现 3.docker理念 解决了运行环境和配置问题的软件容器&#xff0c;方便做持续集成并有助于整体发布的容器虚拟化…

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…

CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布

当地时间1月7日&#xff0c;2025年国际消费电子展&#xff08;CES 2025&#xff09;在美国拉斯维加斯正式开幕。美格智能合作伙伴阿加犀联合高通在展会上面向全球重磅发布人形机器人原型机——通天晓&#xff08;Ultra Magnus&#xff09;。该人形机器人内置美格智能基于高通QC…