computed() 创建计算属性

最后更新:2026-10-22

computed() 创建计算属性

computed() 根据其他响应式数据推导出一个新值,结果会被缓存:只有依赖变化时才重新计算。

分组响应式·核心
类型API
作用域组件内
Vue 版本3.0+
SSR 支持支持

📝 语法

const doubled = computed(() => count.value * 2)

// 可写计算属性
const full = computed({
  get: () => first.value + " " + last.value,
  set: (v) => { [first.value, last.value] = v.split(" ") }
})

⚙️ 参数

getter取值函数(或含 get/set 的对象),在其中读取其他响应式数据

返回值:只读(或可写)的 ComputedRef 对象

▶ 示例

修改下面的代码,在预览区实时查看效果:

输出:

默认显示「合计:20 元」;修改任一输入框,合计立即重算。

💡 要点

💡 提示 有缓存:多个地方用同一个 computed,只算一次;而 methods 每次渲染都会重新执行。
⚠️ 注意 computed 的 getter 里不要写副作用(如发请求、改其他状态),那是 watch 的职责。
ℹ️ 说明 只依赖真实响应式来源才有效:依赖里没有响应式数据时,结果永远不会更新。
更多案例即将上线。

📚 相关教程

❓ 常见问题

Q computed 和 methods 该用哪个?
A 基于响应式数据做推导、且结果可复用 → computed(有缓存);带参数、需要每次执行(如事件处理)→ 普通函数。
Q 能直接给 computed 赋值吗?
A 默认只读,赋值会得到警告。需要可写就用 { get, set } 形式。
Q computed 里能写异步代码吗?
A 不能:computed 必须同步返回值,异步派生逻辑应改用 watch + ref。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏