Vue的computed用法解析

一、computed 的核心设计哲学(道)

1. 声明式推导替代命令式更新

  • 声明式编程让开发者只需描述"想要什么",Vue 自动维护从依赖追踪到视图更新的全链路。

2. 纯计算与状态隔离

  • computed 强调无副作用的纯计算,保持状态修改与状态计算的清晰分离。

3. 高效缓存与最小化更新

  • 只有当依赖变化时,computed 才会重新计算结果,极大地提升了性能。

二、从设计哲学推导的常用"术"(用法)

1. 单一状态派生

复制代码
const username = ref('zhangsan');
const upperUsername = computed(() => username.value.toUpperCase());

2. 复合状态派生

复制代码
const totalPrice = computed(() => {
  const sum = goods.reduce((acc, item) => acc + item.price * item.count, 0);
  return Math.max(sum - coupon.value, 0);
});

3. 映射全局状态

复制代码
const userInfo = computed(() => `${userStore.name}(${userStore.age}岁)`);

4. 双向推导

复制代码
const allChecked = computed({
  get() { return list.every(item => item.checked); },
  set(value) { list.forEach(item => item.checked = value); }
});

5. 过滤/排序派生数据

复制代码
const filteredGoods = computed(() => goodsList.value.filter(item => 
    item.name.includes(searchKeyword.value)
));

6. 状态合法性校验

复制代码
const isPhoneValid = computed(() => /^1[3-9]\d{9}$/.test(form.phone));
相关推荐
竹林8184 小时前
从 ethers.js 迁移到 Viem:一个签名验证 Bug 让我彻底放弃旧爱
javascript
Hyyy4 小时前
很多Desktop都在上的Computer Use是什么
前端·llm
慢功夫4 小时前
开篇:VS Code 为什么不是一个普通 React App
前端·visual studio code
你挚爱的强哥5 小时前
Vue2 实现 1.5s 十连击监听(连续点击若干次),封装通用可复用点击检测工具,不用 data!Vue 封装通用连击监听方法,支持自定义时长与点击次数
前端·javascript·vue.js
半个落月5 小时前
用 LangChain.js 手写一个能读写文件和执行命令的 Mini Cursor
javascript·人工智能·后端
天外天-亮5 小时前
HBuilder X 使用 uview-plus 方式
开发语言·javascript·hbuilder x·uview-plus
huashengzsj5 小时前
Shopify个人建站如何搭建独立站:从零开始的完整指南
前端·网络·人工智能
程序猿小泓5 小时前
从 Claude Code 学 Agent Harness:一个前端工程师的 AI Agent 学习笔记
前端·人工智能·学习
柒和远方6 小时前
从审计日志到可下载证据包:事务型 Outbox、租约 fencing 与保留水位
前端·后端·架构
卓怡学长6 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea