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));
相关推荐
m0_敲代码的彭于晏1681 小时前
Vercel 前端部署平台深度评测
前端
2301_32241428041 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
怕浪猫2 小时前
外包和大厂的前端代码,差在凌晨三点
前端·面试·github
m0_敲代码的彭于晏1683 小时前
Vercel 前端部署与全栈开发实战指南
前端·状态模式
徐小夕3 小时前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
贾伟康3 小时前
【化学实验室|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
前端·移动开发·harmonyos·arkts·arkui
Csvn4 小时前
SSR/SSG/ISR(上):峡谷与渲染策略的时间预算
前端
Csvn4 小时前
SSR/SSG/ISR(下):可交互性、新鲜度与回源账
前端
酷炫码神4 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
Elcker6 小时前
YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台
前端·人工智能·npm