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 或者解构响应式对象时,确保解构后的变量仍然具有响应性。

相关推荐
艾斯特_18 小时前
Echarts常用配置项及解释
前端·javascript·echarts
m0_5027249518 小时前
飞书真机调试
开发语言·前端·javascript
我只会写Bug啊19 小时前
复制可用!纯前端基于 Geolocation API 实现经纬度获取与地图可视化
前端·高德地图·地图·百度地图·经纬度
刘一说19 小时前
Vue3 模块语法革命:移除过滤器(Filters)的深度解析与迁移指南
前端·vue.js·js
lkbhua莱克瓦2420 小时前
JavaScript核心语法
开发语言·前端·javascript·笔记·html·ecmascript·javaweb
Trae1ounG20 小时前
这是什么dom
前端·javascript·vue.js
比老马还六20 小时前
Bipes项目二次开发/扩展积木功能(八)
前端·javascript
易营宝20 小时前
全球建站SaaS平台能提升SEO评分吗?是否值得切换?
大数据·前端·人工智能
5134959220 小时前
在Vue.js项目中使用docx和file-saver实现Word文档导出
前端·vue.js·word
AC赳赳老秦21 小时前
Prometheus + DeepSeek:自动生成巡检脚本与告警规则配置实战
前端·javascript·爬虫·搜索引擎·prometheus·easyui·deepseek