欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > vue中computed和watch区别

vue中computed和watch区别

2025/6/16 9:32:48 来源:https://blog.csdn.net/qq_25416827/article/details/148675882  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词