setup 中 computed 替代 options api 计算属性,需传入 getter 函数返回响应式只读 ref,依赖 ref/reactive 数据并显式引用;支持 get/set 双向绑定;依赖 reactive 对象时应确保属性访问保持响应性。

在 setup 中用 computed 替代旧版 Options API 的计算属性,核心是把它当作一个函数来调用,返回一个响应式的只读 ref,而不是声明在对象里。
基础写法:接收 getter 函数
最常用的方式是传入一个箭头函数或普通函数,该函数返回计算结果:
- 从 Vue 解构
computed和ref - 用
ref定义依赖的响应式变量(如count = ref(0)) - 调用
computed(() => count.value * 2),得到一个自动更新的响应式值 - 这个返回值需通过
.value访问(在模板中可直接用,无需 .value)
处理复杂逻辑:带 setter 的双向 computed
当需要支持赋值修改(比如表单联动),可传入一个包含 get 和 set 的对象:
-
get返回当前计算值 -
set接收新值,并反向更新原始数据(例如拆解 fullName 并赋给 firstName/lastName) - 注意:set 中不能直接改 computed 返回值,只能操作其依赖的 ref/reactive 源
依赖 reactive 对象时的注意事项
如果计算依赖的是 reactive({ name: '', age: 0 }) 这类对象,访问属性必须保持响应性:
- 错误写法:
computed(() => user.name)—— 若 user 是 reactive,name 是响应式属性,这样写没问题;但若 user 是普通对象,会丢失响应 - 推荐统一用
toRefs解构后再计算,避免意外失活 - 深层嵌套属性(如
user.profile.city)只要整个对象由reactive创建,就天然可响应
与 Options API 行为的关键差异
旧版 computed: { total() { return this.a + this.b } } 是隐式绑定 this,而 setup 中必须显式引用依赖:
- 没有自动 this 绑定,所有变量都来自 setup 内部声明或参数传入
- 计算属性不会自动暴露到 this 上,必须在 return 中明确返回
- 模板中使用方式一致(
{{ total }}),但逻辑更透明、调试更直观
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











