Computed 基础怎么使用 computed 计算属性根据依赖自动缓存衍生数据

冬宇大大_7243

冬宇大大_7243

2026-08-25

496人浏览

原创

computed 返回响应式只读值,依赖不变时自动缓存、只计算一次;支持 get/set 实现双向绑定,但 set 中须修改响应式源且避免循环依赖。

computed 基础怎么使用 computed 计算属性根据依赖自动缓存衍生数据

Computed 计算属性的核心用法很简单:它接收一个 getter 函数,返回一个响应式、自动缓存的只读值。只要依赖的响应式数据没变,无论访问多少次,都只执行一次计算。

基础写法:只读模式最常用

在 setup 中,用 computed() 包裹一个函数,该函数里读取 ref 或 reactive 的值即可:

  • 必须 return 计算结果,否则模板中取不到值
  • 函数内部只能读取响应式数据(ref.value、reactive.xxx),不能写非响应式变量或 Date.now() 这类无法追踪的值
  • 返回的是一个带有 .value 的 ref-like 对象,模板中直接用 {{ fullName }},不用加 .value

示例:

const message = ref('Hello')
const reversedMessage = computed(() => message.value.split('').reverse().join(''))

Vuejs
Vuejs

Vue.js 官方推荐通过 npm 进行安装,这是构建现代化前端项目最主流的方式。在终端中执行 npm install vue 即可获取最新稳定版,如需指定版本可添加 @版本号,例如 npm install vue@3.4.0。安装前请确保已配置 Node.js 环境(推荐 v18 及以上版本),并建议将 npm 镜像源切换至国内镜像以提升下载速度。对于大型项目,还可通过 npm create v

下载

依赖必须是响应式的,否则缓存不更新

Vue 只能追踪明确声明的响应式来源。常见错误包括:

  • 解构 props 后直接使用:const { name } = props → name 是普通字符串,不响应;应改用 props.name 或配合 toRefs
  • 用 arr[0] = 'new' 修改数组项 → Vue 3 Proxy 虽支持,但部分场景可能漏触发;稳妥做法是用 arr.splice(0, 1, 'new') 或替换整个数组
  • 在 getter 里调用 Date.now() 或 Math.random() → 它们不在依赖图中,computed 永远不会重算

模板中多次使用,也只算一次

这是和 methods 的关键区别:

  • 模板里写 5 次 {{ filteredList }},computed 只执行 getter 一次(首次访问时)
  • methods 写成 {{ getFilteredList() }},每次渲染都会调用,哪怕依赖完全没变
  • 尤其处理大数据过滤、格式化等耗时逻辑时,性能差距非常明显

可写 computed:少数需要双向同步的场景

如果确实需要赋值触发更新,可以传入一个对象,含 get 和 set:

const fullName = computed({
  get() { return firstName.value + ' ' + lastName.value },
  set(val) { const parts = val.split(' '); firstName.value = parts[0]; lastName.value = parts[1] || '' }
})

注意:set 中修改的必须是响应式源数据,且不能造成循环依赖(比如在 set 里又改 fullName 自己)。

相关专题

更多
vue2.0和3.0区别
vue2.0和3.0区别

vue2.0和3.0区别:vue2的响应式原理是利⽤“Object.defineProperty()”对数据进⾏劫持结合发布订阅模式的⽅式来实现,vue3中使⽤了es6的proxy API对数据代理,实现对数据的监控。本专题为大家提供vue2.0和3.0区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.17

1634

5

vue3的生命周期有哪些
vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deactivated等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

11902

5

Vue3组合式API与组件开发实战
Vue3组合式API与组件开发实战

本专题讲解 Vue 3 组合式 API 的核心概念与应用技巧,深入分析响应式系统、生命周期管理、组件设计与复用策略。通过完整项目案例,指导前端开发者实现高性能、结构清晰的 Vue 应用,提升开发效率与代码可维护性。

2026.02.10

296

23

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

2026.10.08

0

20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

80

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

100

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习