当前位置: 首页 > news >正文

vue中computed和watch区别

在 Vue 中,computedwatch 都是用来响应式地处理数据变化的工具,但它们的用途和行为有明显区别。


🔍 一句话总结

  • computed用于声明式计算属性,有缓存

  • watch用于监听响应式数据的变化并执行副作用逻辑,无缓存


🧠 computed(计算属性)

✅ 特点:

  • 有缓存:只有依赖的数据发生变化时,才会重新计算。

  • 适用于:从已有的数据中派生出新数据,用于模板中绑定或复杂逻辑的复用。

  • 声明式:用于表示“这个值是根据什么计算出来的”。

📌 示例:

<template><div>{{ fullName }}</div>
</template><script setup>
import { ref, computed } from 'vue';const firstName = ref('张');
const lastName = ref('三');const fullName = computed(() => {return `${firstName.value} ${lastName.value}`;
});
</script>

✅ 优点:fullName 只有在 firstNamelastName 改变时才重新计算。


👀 watch(侦听器)

✅ 特点:

  • 无缓存:只要监听的数据发生变化就会触发回调。

  • 适用于:执行异步操作、请求接口、副作用逻辑等。

  • 命令式:用于处理数据变化后要做的事情。

📌 示例:

<script setup>
import { ref, watch } from 'vue';const query = ref('');watch(query, (newVal, oldVal) => {console.log('Query changed from', oldVal, 'to', newVal);// 例如发请求
});
</script>

✅ 常用于监听用户输入、数据变化时触发 API 请求、执行副作用等。


🆚 区别对比表

特性computedwatch
是否有缓存✅ 有❌ 无
典型用途派生新值(如模板中展示)监听变化执行副作用(如请求/存储)
写法风格声明式命令式
是否必须有返回值✅ 必须返回值❌ 不需要(一般是执行回调)
支持异步操作❌ 不推荐(不适合)✅ 支持

🚀 总结使用场景

场景使用建议
根据已有状态组合出一个新值computed
响应数据变化并执行副作用(如请求)watch
想避免重复计算,提高性能computed
想监控某个数据的变化并执行一些逻辑watch

相关文章:

  • RabbitMQ--集群副本
  • 通过 O-RAN 传感进行异常识别和防护
  • 【橘子的AI | 每日一课】Day4!机器学习 (ML) 基础
  • Python 基础语法 (4)【适合0基础】
  • StarRocks Community Monthly Newsletter (May)
  • 线性代数(1)线性方程组的多种解法
  • 如何设计一个既提供绘图Tools又提供example_data的MCP服务器:
  • 计算机组成原理期末题目解析
  • nohz_full 参数对内核软硬锁检测机制的影响分析
  • 大模型笔记6:微调
  • Redis中的zset的底层实现
  • 【Create my OS】5 内核线程
  • 【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案
  • srm管理系统供应商管理在线询价比价管理电子采购(java)
  • redis序列化
  • 嵌入式学习笔记C语言阶段--16函数指针
  • YOLOv3 中的 NMS 详解(基于论文与 Darknet 实现)
  • C#设计模式之AbstractFactory_抽象工厂_对象创建新模式-学习
  • 使用 socat 和 xinetd 将程序绑定到端口运行
  • 安卓9.0系统修改定制化____默认开启 开发者选项中的OEM锁解锁选项 开搞篇 五
  • 湖南省和城乡住房建设厅网站/seo网站推广计划
  • 做网站实名认证有什么用/seo也成搜索引擎优化
  • 网店logo设计/seo公司后付费
  • 英语字体设计网站好/中国国家人事人才培训网
  • 高效网站推广费用/菏泽seo
  • 学院网站建设需求分析调研表/网站的推广