Vue - ref( ) 和 reactive( ) 响应式数据的使用

devtools/2025/1/24 7:48:28/

一、ref( )

在 Vue 3 中,ref() 是一个用于创建响应式引用的函数。它是 Vue 3 Composition API(组合式API) 的一部分,允许在组件中创建响应式数据

使用对象:基本数据类型(String 、Number 、Boolean 、Null 等)、对象类型

****需要使用 . value 

1.引入ref () 函数

javascript">// 引入
import { ref } from 'vue';

2.  创建响应式引用

javascript">// 定义 响应式数据  在 <script> 标签中
// 在 <script> 标签中写的 JS 代码 , 都需要写 .value 来获取值
const name = ref('张三');
const age = ref(20);
const tel = '123xxxxxxxxxx';const count = ref(0); // 创建一个响应式的数字
const message = ref('Hello, Vue 3!'); // 创建一个响应式的字符串

3.  访问和修改引用的值

javascript">// 访问和修改引用的值// 使用 ref() 创建的响应式引用会返回一个对象// 该对象有一个 .value 属性来访问和修改其值console.log(count.value); // 0
count.value++; // 修改值
console.log(count.value); // 1

 4. 在模板中的使用

javascript"><template>// 在模板中,不需要使用 .value 。当在模板中使用时,ref 会自动解包<div class="person"><h2>姓名:{{ name }}</h2><h2>年龄:{{ age }}</h2><h2>地址:{{ tel }}</h2><button @click="changeName">修改名字</button><button @click="changeAge">修改年龄</button><button @click="showTel">查看电话</button><p>{{ count }}</p> <!-- 直接使用 count --><button @click="count++">Increment</button></div></template>

5.  与对象的结合使用

javascript">const user = ref({name: 'Alice',age: 25,
});// 访问和修改对象属性
console.log(user.value.name); // Alice
user.value.age++; // 修改属性
console.log(user.value.age); // 26

当我们在模板中使用了 ref 时,在改变了 这个 ref 的值时,Vue 会自动检测到这个变化,并且相应地更新 DOM。

ref ( ) 是基于 reactive( ) 编写的。  

二、reactive( ) 

Vue 3 中,reactive() 是一个用于创建响应式对象的函数。它是 Vue 3 组合式 API 的一部分,允许开发者将普通对象转换为响应式对象,从而在数据变化时自动更新视图。

使用对象:对象类型

****需要使用 . value 

1.导入 reactive ( ) 函数

javascript">// 从 Vue 中导入
import { reactive } from 'vue';

2.创建响应式对象 

javascript">// 创建响应式对象
const state = reactive({count: 0,message: 'Hello, Vue 3!',
});

3.  访问和修改响应式属性

javascript">// 访问和修改响应式属性
// 可以像访问普通对象一样访问和修改响应式对象的属性。
// Vue 会自动追踪这些属性的变化,并在它们变化时更新视图。console.log(state.count); // 0
state.count++; // 修改属性
console.log(state.count); // 1

4. 支持嵌套对象的响应性:

javascript">const state = reactive({user: {name: 'Alice',age: 25,},
});// 访问嵌套属性
console.log(state.user.name); // Alice// 修改嵌套属性
state.user.age++;
console.log(state.user.age); // 26

 

三、ref( ) 与 reactive( ) 的区别:

  • ref() 返回一个包含 .value 属性的对象,而 reactive() 返回的是一个直接可用的响应式对象。
  • reactive 重新分配一个新对象,会失去响应式。(可以使用Object.assign 来整体替换)。
  • 使用原则:
    • 若需要一个基本类型的响应式数据,必须使用 ref ; 
    • 若需要一个响应式对象,层级不深,ref ,reactive 都可以使用;
    • 若需要一个响应式对象,且层级较深,推荐使用 reactive。


http://www.ppmy.cn/devtools/153077.html

相关文章

【学习笔记】计算机网络(一)

第1章 概述 文章目录 第1章 概述1.1 计算机网络在信息时代中的作用1.2 互联网概述1.2.1 网络的网络1.2.2互联网基础结构发展的三个阶段1.2.3 互联网的标准化工作 1.3 互联网的组成1.3.1 互联网的边缘部分1.3.2 互联网的核心部分 1.4 计算机网络在我国的发展1.5 计算机网络的类别…

PCIE模式配置

对于VU系列FPGA&#xff0c;当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时&#xff0c;等同于K7系列中的AXI Memory Mapped To PCI Express IP。

SCP收容物221~225

注 &#xff1a;此文接SCP收容物211~215,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-221 scp-222 scp-223 scp-224 scp-225 s…

关于扫雷的自动补空实现C语言

关于扫雷的自动补空实现C语言 相信很多朋友在用C语言实现扫雷功能时&#xff0c;都想实现扫雷里面的的自动补足功能&#xff0c;但总是难以实现&#xff0c;在这里我将分享一种方法——递归思想 先看代码&#xff01; 位置在game.c //判断附近雷区并过滤空白区&#xff08;…

Java爬虫还有其他用途吗?

当然&#xff0c;Java爬虫的用途非常广泛&#xff0c;不仅仅局限于获取电商平台的商品信息。它几乎可以应用于任何需要从互联网抓取数据的场景。以下是一些常见的Java爬虫用途&#xff0c;按不同领域分类介绍&#xff1a; 1. 数据分析与市场研究 市场趋势分析&#xff1a;通过爬…

基于模板方法模式-消息队列发送

基于模板方法模式-消息队列发送 消息队列广泛应用于现代分布式系统中&#xff0c;作为解耦、异步处理和流量控制的重要工具。在消息队列的使用中&#xff0c;发送消息是常见的操作。不同的消息队列可能有不同的实现方式&#xff0c;例如&#xff0c;RabbitMQ、Kafka、RocketMQ…

Web入门

Spring 官网:spring.io Spring发展到今天已经形成了一种开发生态圈&#xff0c;Spring提供了若干个子项目&#xff0c;每个项目用于完成特定的功能 Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 SpringBootWeb入门 ①.创建springboot工程&#xff0…

Solr与Elasticsearch 的对比与选型

在现代应用中&#xff0c;搜索引擎扮演着至关重要的角色。Apache Solr 和 Elasticsearch 是当前最流行的两个开源搜索引擎&#xff0c;它们各有优缺点&#xff0c;适用于不同的使用场景。本文将对这两者进行详细比较&#xff0c;并提供选型建议。 1. 概述 1.1 Apache Solr A…