网站首页 > 精选文章 正文
1 ref
功能
ref 用来创建一个 响应式的数据引用。
- 当它的值改变时,Vue 会 自动更新依赖这个值的模板或计算属性。
- ref 返回的是一个对象,值在 .value 属性里。
基本用法
import { ref } from 'vue'
const count = ref(0) // 初始化为 0
console.log(count.value) // 访问值
count.value++ // 修改值,模板会自动更新
模板使用
在 <template> 中 Vue 会自动解包 ref,不需要 .value:
<template>
<p>{{ count }}</p> <!-- 自动读取 count.value -->
<button @click="count++">增加</button>
</template>
常见场景
- 存储简单的原始值(number, string, boolean)
- 存储对象或数组也可以,但要注意 Vue 3 会用 Proxy 对对象和数组做响应式处理:
const user = ref({ name: 'Alice', age: 30 })
user.value.name = 'Bob' // 响应式修改
2 computed
功能
computed 用来定义 基于其他响应式数据计算出来的值。
- 会 缓存 计算结果,只有依赖发生变化才重新计算。
- 默认是 只读的,也可以写成可写 computed。
基本用法(只读)
import { ref, computed } from 'vue'
const count = ref(1)
const double = computed(() => count.value * 2)
console.log(double.value) // 2
count.value = 3
console.log(double.value) // 6
可写 computed
const count = ref(1)
const double = computed({
get: () => count.value * 2,
set: (val) => count.value = val / 2
})
double.value = 10
console.log(count.value) // 5
模板使用
<template>
<p>{{ double }}</p> <!-- 自动解包 double.value -->
<button @click="count++">增加</button>
</template>
常见场景
- 基于一个或多个 ref 或 reactive 的计算值
- 表单验证结果、过滤列表、派生状态等
- 想缓存计算结果,避免重复计算
3 对比 ref 和 computed
特性 | ref | computed |
响应性 | 值本身响应式 | 基于依赖计算的响应式 |
读写 | 可以直接读写 .value | 默认只读,或者可写 computed |
缓存 | 无缓存,每次访问都是当前值 | 有缓存,依赖没变不会重新计算 |
使用场景 | 原始数据、状态管理 | 派生状态、计算值 |
注意点
- 在 <script setup> 中,模板会自动解包 ref 和 computed,不需要 .value。
- 如果你需要在 JS 里修改 computed,必须:
- 用可写 computed,或者
- 直接操作源数据(ref / reactive / store)
猜你喜欢
- 2025-09-29 Vue3小知识:一篇关于emits的使用指南
- 2025-09-29 vue-particles粒子背景组件,支持服务端渲染
- 2025-09-29 「 VUE3 + TS + Vite 」父子组件间如何通信?
- 2025-09-29 Vue深入组件:组件事件详解2_vue组件例子
- 2025-09-29 vue3 新特性 computed、watch、watchEffect 看完就会
- 2025-09-29 10个Vue3代码简写技巧_vue代码示例
- 2025-09-29 总结7个实用的Vue自定义指令_vue自定义指令两种方式
- 2025-09-29 【Vue3】插槽(Slots):掌握组件内容分发的艺术
- 2025-09-29 Vue基础入门,第21节,表单数据的收集与提交
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)