Vue2中的监听和计算属性的区别

ops/2024/10/20 11:46:44/

一、监听Watch

     监听器(Watchers)是一种机制,用于在数据发生变化时执行特定的操作。监听器允许你监视 Vue 实例中的数据变化,并在数据变化时执行自定义的逻辑。

1、支持异步操作
2、接收两个参数,第一个是最新的值,第二个是旧的值
3、监听的数据是data中声明过父组件传递过来的prop中的值,还可以监听路由$route
4、immediate:组件加载立即触发回调函数的执行(为false时,只有监听的数据变化回调函数才会执行)
5、deep:深度监听,一般用来监听对象。

二、计算属性

计算属性(Computed Properties)是一种便利的特性,允许你在 Vue 实例中声明计算属性,这些属性的值会根据依赖数据的变化而变化,同时具有缓存机制,只有在相关依赖数据发生改变时才会重新计算。

计算属性的特点:
响应式更新: 计算属性会根据它们的依赖进行响应式更新。当依赖数据发生变化时,计算属性会重新计算,并且在依赖数据没有变化时,会返回之前缓存的结果,提高了性能。

缓存机制: 计算属性具有缓存机制,只有在相关依赖数据发生改变时才会重新计算。这意味着在多次访问计算属性时,如果依赖数据没有发生改变,计算属性会直接返回之前的计算结果,而不会重新执行计算函数。

简洁易用: 计算属性的声明方式简洁明了,能够帮助你轻松地处理复杂的计算逻辑,并且能够将这些逻辑封装在属性中,使得代码更加清晰易懂。

三 、两者差别

触发方式

计算属性: 计算属性是基于依赖数据的值进行计算的,只有当依赖数据发生变化时,计算属性才会重新计算。计算属性会自动缓存计算结果,只有在相关依赖发生变化时才会重新计算,以提高性能。

监听器: 监听器则是在某个数据发生变化时执行特定的回调函数。你可以手动设置需要监听的数据,并在数据变化时执行指定的逻辑,而不像计算属性那样自动进行计算和缓存。

性能

计算属性: 由于具有缓存机制,计算属性在相同依赖数据的情况下只会计算一次,并且在依赖数据不变的情况下会直接返回缓存结果,因此具有较高的性能。

监听器: 监听器每次数据变化都会执行回调函数,不具有缓存机制,因此在多次数据变化时可能会存在性能开销。


http://www.ppmy.cn/ops/122016.html

相关文章

C语言基础之数组

上一篇讲述了C语言函数的使用,本文讲述数组的相关概念,通过一维数组、二维数组、数组越界等详细讲解数组相关的具体内容,以辅助读者了解并掌握数组相关概念。 一维数组 一维数组的定义与创建 若无数组,我们要存储一堆类型相同的…

分享我“Excel 表格”关键字的博客笔记(python脚本全程自动)

Python脚本全程自动,全部Python内建工具脚本纯净。 (笔记模板由python脚本于2024年10月05日 19:51:06创建,本篇笔记适合喜欢Excel和Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大…

工厂模式与建造者模式的区别

在软件设计中,工厂模式和建造者模式是两种常见的设计模式,它们都是用于创建对象,但是各自有不同的应用场景和目的。本文将通过餐馆点餐的例子,深入探讨这两种模式的区别。 工厂模式 工厂模式的核心思想是通过一个抽象工厂类来创…

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”,是因为它允许开发者根据项目的需求逐步引入和使用其功能,而不需要一次性使用整个框架。简单来说,Vue 提供了从简单到复杂的功能层次,可以灵活选择使用。 按需使用:Vue 的核心功能…

【MYSQL】mysql约束---自增长约束(auto_increment)

1、概念 在Mysql中,当主键为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。 注意:自增长约束通常与主键放在一起使用。 通过给…

SQL第11课——使用子查询

11.1 子查询 查询(query): 任何SQL语句都是查询,但此术语一般指select语句。 select语句是SQL的查询,迄今为止所有的select语句都是简单查询,即从单个数据库表中检索数据的单条语句。 SQL还允许创建子查询(subquer…

Spring的热部署工具和数据库密码加盐操作

1.布置热部署 引言:在程序运行起来后,如果我们对代码进行了修改,需要重新测试修改后的程序,就得重新启动程序,这样很麻烦。于是引入热部署之后,我们就不需要重新启动程序,会自动更正。 1.配置po…

修改ID不能用关键字作为ID校验器-elementPlus

1、校验器方法 - forbiddenCharValidator const idUpdateFormRef ref(null); const forbiddenCharValidator (rule, value, callback) > {const forbiddenCharacters [as,for,default,in,join,left,inner,right,where,when,case,select];for (let forbiddenCharacter o…