Vue中的 ref、toRef 和 toRefs

ref

ref 是创建一个响应式的引用对象。这个对象有一个 .value 属性,用来存储任何类型的值(包括基本类型和复杂类型)。当这个值改变时,依赖于它的模板或计算属性会自动更新。

javascript 复制代码
import { ref } from 'vue';

const count = ref(0); // 创建一个值为 0 的响应式引用
console.log(count.value); // 访问值
count.value++; // 修改值

toRef

toRef 是将一个对象的属性转换成一个 ref,这样即使原始对象的属性发生变化,新的 ref 也会保持响应性。

javascript 复制代码
import { toRef } from 'vue';

const state = { count: 0 };
const count = toRef(state, 'count'); // 将 state.count 转换为一个 ref

state.count = 1; // 改变原对象的属性
console.log(count.value); // 输出 1,说明 count 仍然是响应式的

toRefs

toRefs 是将一个包含多个响应式属性的对象转换成一个普通对象,其中每个属性都是一个 ref。这通常用于将响应式对象解构为单独的 ref,以避免失去响应性。

javascript 复制代码
import { reactive, toRefs } from 'vue';

const state = reactive({ count: 0, name: 'Vue' });
const stateAsRefs = toRefs(state); // 将 state 的所有属性转换为 ref

state.count = 1; // 改变原对象的属性
console.log(stateAsRefs.count.value); // 输出 1
console.log(stateAsRefs.name.value); // 输出 'Vue'

主要区别

ref 是用于创建一个新的响应式引用,可以是任何类型的数据。

toRef 是用于将现有对象的一个特定属性转换为 ref,它不会创建新的数据副本,而是与原对象的属性保持同步。

toRefs 是用于将整个响应式对象的所有属性都转换为 ref,常用于函数组件中接收 props 或者解构响应式对象时,确保解构后的变量仍然具有响应性。

相关推荐
幽络源小助理9 分钟前
苹果CMS V10 MXPro V4.5模版下载, 自适应视频主题源码, 幽络源源码
前端·开源·源码·php源码
kyriewen32 分钟前
坏了,黑客学会用AI写外挂了
前端·程序员·ai编程
xiangxiongfly9151 小时前
Vue3 根据角色权限动态加载路由
前端·javascript·vue.js·动态加载路由
达达尼昂1 小时前
Claude 多 Agent 系统:从零搭建一个 4 Agent 团队
前端·架构·ai编程
Aolith2 小时前
我是怎么把个人论坛首页性能从80分优化到100分的(附踩坑全记录)
vue.js·性能优化
容智信息2 小时前
AI Agent(智能体)的输出格式应该从 Markdown 转向 HTML吗?
前端·人工智能·rust·编辑器·html·prompt
_风满楼2 小时前
TDD 进阶:换个角度看会议室预约
前端·javascript·github
Amy_yang2 小时前
uni-app 安卓端纯前端预览 DOCX 的实现思路
前端·vue.js
x_y_2 小时前
分享一个自己总结的前端开发skill~ requirement-to-delivery
前端·ai编程
梨子同志2 小时前
CSS Grid
前端·css