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));
相关推荐
晴天1610 分钟前
前端 postMessage 使用场景
前端·javascript·网络
zhanghaha13141 小时前
HTML系列教程:15_标签 全称 + 简写 超详细讲解(新手专用)
前端·html
zhanghaha13141 小时前
HTML系列教程:14_HTML 表单与输入框 <form>、<input> 零基础详解
java·前端·javascript
IMPYLH1 小时前
HTML 的 <samp> 元素
前端·网络·html
IMPYLH1 小时前
HTML 的 <script> 元素
前端·html
weixin_493503676 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式
李少兄7 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
尾善爱看海9 小时前
前端算法与手写题集
前端·算法
徐小夕9 小时前
JitWord 4.0 万字分享:从协同工具到AI Word操作系统,聊聊3年产品创业史
前端·vue.js·后端
shmily麻瓜小菜鸡11 小时前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript