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));
相关推荐
用户5757303346242 小时前
🐱 从“猫厂”倒闭到“鸭子”横行:一篇让你笑出腹肌的 JS 面向对象指南
javascript
Moment2 小时前
腾讯终于对个人开放了,5 分钟在 QQ 里养一只「真能干活」的 AI 😍😍😍
前端·后端·github
码路飞2 小时前
GPT-5.4 Computer Use 实战:3 步让 AI 操控浏览器帮你干活 🖥️
java·javascript
比尔盖茨的大脑2 小时前
AI Agent 架构设计:从 ReAct 到 Multi-Agent 系统
前端·人工智能·全栈
天才熊猫君2 小时前
使用 Vite Mode 实现客户端与管理端的物理隔离
前端
HelloReader2 小时前
React Hook 到底是干嘛的?
前端
用户60572374873082 小时前
OpenSpec 实战:从需求到代码的完整工作流
前端·后端·程序员
进击的尘埃2 小时前
Service Worker 离线缓存这事,没你想的那么简单
javascript
进击的尘埃2 小时前
HTTP/3 的多路复用和 QUIC 到底能让页面快多少?聊聊连接迁移和 0-RTT
javascript