news 2026/7/30 2:13:55

Vue 进阶:深入解析 computed 和 watch 的核心区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 进阶:深入解析 computed 和 watch 的核心区别

一、Vue 核心概念解析

1.1 计算属性

计算属性是基于它们的响应式依赖进行缓存的。只有在相关响应式依赖发生改变时它才会重新求值。它是自动执行的,没有回调函数的概念。

1.2 侦听器

侦听器允许我们执行异步操作(例如 API 调用)并在数据变化时采取相应的行动。它提供回调函数,由开发者主动调用。


二、computed 与 watch 的核心区别

2.1 缓存机制与性能

computed 具有缓存机制。只要依赖的响应式数据没有发生改变,computed 属性会立即返回之前的缓存结果。这对于昂贵的计算非常有利。

watch 没有缓存。每次数据发生变化时,watch 的回调函数都会被执行。如果回调函数中有重操作,频繁触发可能导致性能下降。

2.2 数据流向与定义方式

computed 接收单个 getter 函数,返回一个派生值。它更像是数据的转换器。

watch 接收一个字符串方法名、一个表达式或一个选项对象。它通常用于监视单一数据点或深层变化。

2.3 适用范围

computed 适合监听一个数据的变化并计算出一个新的值。例如:过滤列表、格式化日期。

watch 适合在数据变化时执行异步操作或执行一组更复杂的操作。例如:监听 userAge 变化后请求用户详情。


三、决策流程图与选择指南

3.1 使用场景选择

我们可以通过以下流程图来决定何时使用 computed,何时使用 watch。

否/需要副作用

否/简单值监听

开始: 需要处理数据

是否需要派生新值?

选择 computed

提供 getter 函数

返回计算后的值

是否需要异步或操作副作用?

选择 watch

配置回调函数

处理数据变化

选择 watch

监听基本类型变化

3.2 代码示例对比

computed 示例

computed: { fullName() { return firstName.value + ' ' + lastName.value; } }

watch 示例

watch: { firstName(newVal, oldVal) { console.log('First name changed from', oldVal, 'to', newVal); } }


四、进阶:深度侦听与立即执行

4.1 watch 的深度选项

watch 默认不监听对象内部属性的变化。要深度监听,请使用deep: true

watch: { user: { handler(newVal) { console.log('User data deep changed:', newVal); }, deep: true } }

4.2 watch 的立即执行选项

默认情况下,侦听器在挂载后才会触发。使用immediate: true在创建时立即执行回调。

watch: { message: { handler(newVal) { console.log('Message:', newVal); }, immediate: true } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 2:09:33

Unity 2022 LTS与PICO SDK 4.5.0开发环境搭建全攻略

1. 项目概述与核心价值最近在社区里看到不少朋友在折腾PICO一体机上的Unity开发环境搭建,尤其是从Unity 2021升级到2022 LTS,或者初次接触PICO SDK 4.5.0时,总会遇到各种稀奇古怪的报错,从Android SDK路径不对,到Gradl…

作者头像 李华
网站建设 2026/7/30 2:08:55

舞蹈视频音视频同步与特效处理技术实战指南

最近在整理音乐项目时,发现很多开发者对舞蹈表演视频的技术处理很感兴趣。特别是像PSYCHIC FEVER这样的专业舞蹈团体,其表演视频涉及复杂的音视频同步、特效处理和多媒体集成技术。本文将完整解析一个舞蹈表演视频项目的技术实现方案,从环境搭…

作者头像 李华
网站建设 2026/7/30 2:03:21

Qt开发中QString与容器类的核心用法与性能优化

1. QString在Qt开发中的核心地位QString作为Qt框架中最基础也最常用的字符串处理类,几乎出现在每一个Qt项目的代码中。不同于标准C的std::string,QString从设计之初就充分考虑了国际化、编码转换和跨平台需求。我经历过从MFC到Qt的迁移项目,最…

作者头像 李华
网站建设 2026/7/30 2:02:33

深度解析Botty:基于像素识别的D2R自动化技术革新

深度解析Botty:基于像素识别的D2R自动化技术革新 【免费下载链接】botty D2R Pixel Bot 项目地址: https://gitcode.com/gh_mirrors/bo/botty Botty是一款针对《暗黑破坏神2:重制版》(D2R)的像素级自动化工具,通…

作者头像 李华
网站建设 2026/7/30 1:59:45

图吧工具箱下载安装《保姆级日常使用教程》

前言:什么是图吧工具箱,全称“图拉丁吧硬件检测工具箱”,是一款免费、开源、绿色纯净的硬件检测与系统维护工具合集-。它起源于国内知名的硬件论坛“图拉丁吧”(图吧),自2014年上线以来,已持续免…

作者头像 李华