Vue3实战笔记(49)—Vue 3响应式魔法:ref vs reactive深入对决

文章目录

  • 前言
  • [一、 ref 和 reactive主要差异](#一、 ref 和 reactive主要差异)
  • 总结

前言

Vue 3 中的 ref 和 reactive 都是用于创建响应式数据的工具,但它们之间存在一些重要的区别。今天聊聊它们之间的主要差异:


一、 ref 和 reactive主要差异

数据类型:

ref 主要用于处理基本数据类型(如 string、number、boolean 等)的响应式数据。当你使用 ref 创建一个响应式引用时,它返回的是一个对象,该对象具有一个指向内部值的 value 属性。

reactive 则用于处理复杂数据类型(如对象、数组等)的响应式数据。它直接返回一个响应式代理对象,你可以直接访问和修改其属性。

使用方式:

对于 ref 创建的响应式数据,你需要通过 .value 来访问和修改其值。例如:const count = ref(0); console.log(count.value); count.value++;

对于 reactive 创建的响应式数据,你可以直接访问和修改其属性。例如:const state = reactive({ count: 0 }); console.log(state.count); state.count++;

模板中的使用:

在 Vue 3 的模板中,当你使用 ref 创建的响应式数据时,你仍然需要通过 .value 来访问其值。但是,如果你是在 setup 函数中返回的响应式引用,Vue 会自动解包它,因此在模板中你不需要使用 .value。

对于 reactive 创建的响应式数据,你可以在模板中直接访问其属性,无需任何额外操作。

解构问题:

当从 reactive 对象中解构出属性时,这些属性将失去其响应性。这是因为解构操作返回的是原始值的副本,而不是响应式代理。

为了保持响应性,你可以使用 toRefs 函数来解构 reactive 对象。这将返回一个普通的对象,其属性是响应式引用,因此你可以在模板中直接访问它们而无需使用 .value。

返回值:

ref 返回一个对象,该对象具有一个指向内部值的 value 属性。

reactive 返回一个响应式代理对象,你可以直接操作其属性。


总结

总的来说,ref 和 reactive 都是Vue 3中强大的响应式API,选择使用哪一个取决于具体的使用场景和性能考虑。对于基本数据类型或需要替换对象的场景,ref 是合适的选择;而对于需要创建一个响应式状态容器的对象,reactive 是更好的选择。

轻挥一袖桃花雨,醉卧云水笑春阳。

相关推荐
ACP广源盛139246256733 小时前
硬件选型笔记:国产 PCIe Gen2.1 交换芯片 IX6024@ACP,工控与存量设备国产化改造方案评估
笔记·硬件架构·硬件工程·pcie·国产芯片
半个落月3 小时前
LangChain Agent 中间件实战(上):生命周期、状态、短路与工具包
javascript·langchain
半个落月3 小时前
LangChain Agent 中间件实战(下):DeepAgents文件权限、长期记忆与对话摘要
javascript·langchain
文人sec4 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
u0111026755 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
摇滚侠5 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
xier_ran5 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
志尊宝5 小时前
Vue3 零基础每日笔记(078):首屏加载速度优化汇总——清单化方案
笔记
hhb_6186 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts
const_qiu8 小时前
第一章 1.1-1.2:基础模型调用与 TypeScript 入门 —— Java 开发者的视角
java·javascript·typescript