两周掌握Vue3(四):计算属性、监听属性、事件处理

文章目录

  • 一、计算属性
    • 1.什么是计算属性
    • 2.代码示例
  • 二、监听属性
  • 三、事件处理

代码仓库:跳转
当前分支:04

一、计算属性

1.什么是计算属性

Vue 中的计算属性具有以下作用:

  1. 数据处理:计算属性可以用于对数据进行处理和计算,例如对原始数据进行格式化、筛选、排序等操作,以便在视图中直接使用处理后的数据。

  2. 响应式更新:计算属性会根据其所依赖的响应式属性的变化而自动更新。这意味着当依赖的数据发生变化时,计算属性会自动重新计算其值,从而保持视图的实时更新。

  3. 模块化和复用:通过将复杂的数据处理逻辑封装在计算属性中,可以提高代码的可维护性和可读性。此外,计算属性还可以在不同的组件中进行复用,从而避免重复编写相同的数据处理逻辑。

  4. 缓存:计算属性会缓存其计算结果,只有在依赖的响应式属性发生变化时才会重新计算。这样可以避免不必要的重复计算,提高性能。

总的来说,计算属性在Vue中扮演着对数据进行处理、响应式更新、模块化和复用以及缓存等方面的重要角色,能够帮助我们更加高效地管理和处理组件中的数据。

2.代码示例

在这个示例中,我们定义了一个名为price的数据属性和一个名为discount的数据属性,它们分别表示商品的原始价格和折扣比例。然后,在computed属性中,我们定义了两个计算属性originalPrice和discountedPrice,分别用于计算原始价格和折扣后的价格。

当price或discount发生变化时,originalPrice和discountedPrice会自动重新计算其值,并且在模板中使用它们时会自动更新视图。这样,我们就可以方便地对价格进行处理和计算,而且不需要手动管理其更新逻辑。

App.vue

<template><div><p>原始价格:{{ originalPrice }}</p><p>折扣后的价格:{{ discountedPrice }}</p></div>
</template><script>
export default {data() {return {price: 100,discount: 0.2};},computed: {originalPrice() {return this.price;},discountedPrice() {return this.price * (1 - this.discount);}}
};
</script>
  • 效果:

在这里插入图片描述

二、监听属性

在 Vue 3 中,我们可以使用 watch 函数来监听属性的变化。

watch 函数接受两个参数:要监听的属性和回调函数。当被监听的属性发生变化时,回调函数就会被触发。

以下是一个完整的代码示例:

MyCounter.vue

<template><div><p>当前计数:{{ count }}</p><button @click="increment">增加计数</button></div>
</template><script>
import { ref, watch } from 'vue';export default {setup() {const count = ref(0);function increment() {count.value++;}watch(count, (newValue, oldValue) => {console.log(`计数从 ${oldValue} 变为 ${newValue}`);});return {count,increment};}
};
</script>

在这个示例中,我们首先导入了 refwatch 函数。然后在 setup 函数中,我们使用 ref 创建了一个名为 count 的响应式属性,并定义了一个 increment 函数来增加 count 的值。接着,我们使用 watch 函数来监听 count 的变化,并在回调函数中打印出新旧值。

当点击按钮增加计数时,count 的值会发生变化,watch 中的回调函数就会被触发,打印出新旧值。这样,我们就可以方便地监听属性的变化,并在变化时执行相应的逻辑。

在这里插入图片描述

三、事件处理

我们可以使用 v-on 指令来监听 DOM 事件,从而执行 JavaScript 代码。

v-on 指令可以缩写为 @ 符号。以下是代码示例:

ClickCom.vue

<template><button @click="handleClick">点击我</button></template><script>export default {methods: {handleClick() {alert('按钮被点击了!')}}};</script>

在这里插入图片描述

  • 事件:

原生 DOM 事件是指由浏览器原生支持的事件,Vue 3中支持的原生 DOM 事件包括但不限于:

  1. 点击事件(click)
  2. 双击事件(dblclick)
  3. 鼠标移入事件(mouseenter)
  4. 鼠标移出事件(mouseleave)
  5. 键盘按下事件(keydown)
  6. 键盘松开事件(keyup)
  7. 输入事件(input)
  8. 变化事件(change)
  9. 提交事件(submit)
  10. 滚动事件(scroll)
  11. 聚焦事件(focus)
  12. 失焦事件(blur)
  13. 鼠标移动事件(mousemove)
  14. 鼠标按下事件(mousedown)
  15. 鼠标松开事件(mouseup)
  16. … 拖拽事件(drag)
  17. … 拖拽开始事件(dragstart)
  18. … 拖拽结束事件(dragend)
  19. … 拖拽进入目标元素事件(dragenter)
  20. … 拖拽离开目标元素事件(dragleave)

这些是常见的原生 DOM 事件,Vue 3可以通过@符号在模板中绑定这些事件,并在对应的处理函数中执行相应的逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医院患者满意度抽样方法

医院患者满意度调查的抽样方法是选择一部分患者&#xff0c;代表整体患者群体&#xff0c;以便获取可靠的数据&#xff0c;同时降低成本和时间开销。以下是一些医院患者满意度调查中常用的抽样方法&#xff1a; 简单随机抽样&#xff1a;这是一种最基本的抽样方法&#xff0c;…

格雷希尔G65系列快速接头满足汽车减震器的气压、油压测试要求

当汽车经过不平路面时&#xff0c;汽车减震器可以抑制弹簧吸震后因反弹带来的震荡和来自路面的冲击&#xff0c;为乘客带来平稳舒适的行车体验。减震器在出厂之前&#xff0c;需要模拟汽车的真实行驶环境&#xff0c;在模拟当中需要对它们进行气压和油压的轮番测试。 客户的测试…

ssm基于java web的防疫工作志愿者服务平台的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本防疫工作志愿者服务平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数…

PHP短链接url还原成长链接

在开发过程中&#xff0c;碰到了需要校验用户回填的短链接是不是系统所需要的&#xff0c;于是就需要还原找出短链接所对应的长链接。 长链接转短链接 在百度上搜索程序员&#xff0c;跳转页面后的url就是一个长链接。当然你可以从任何地方复制一个长链接过来。 长链接 http…

代码随想录 字符串

344.反转字符串 344. 反转字符串 简单 提示 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a…

解析七人拼团,一人出局:社交电商的新玩法

每天五分钟讲解一个电商模式&#xff0c;大家好我是模式策划啊浩Zeropan_HH 在当今的社交电商时代&#xff0c;各种创新的营销策略层出不穷。其中&#xff0c;“七人拼团&#xff0c;一人出局”的玩法在近年来逐渐崭露头角&#xff0c;成为一种颇受欢迎的营销模式。那么&#…

stm32---输入捕获实验实操(巨详细)

这次来分享上次没说完的输入捕获的知识点 实验中用到两个引脚&#xff0c;一个是通用定时器 TIM3 的通道 1&#xff0c;即 PA6&#xff0c;用于输出 PWM 信号&#xff0c;另一 个是高级控制定时器 TIM1 的通道 1&#xff0c;即 PA8&#xff0c;用于 PWM 输入捕获&#xff0c;实…

vue3 生命周期

与 2.x 版本生命周期相对应的组合式 API beforeCreate -> 使用 setup() created -> 使用 setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroye…

服务器新创建账号并设置密码与用户权限

1、创建用户&#xff1a; 在root权限下&#xff0c;输入命令useradd -m 用户名&#xff0c;如下 sudo useradd -m love2、设置密码&#xff1a; 输入命令passwd 用户名 回车&#xff0c;接着输入密码操作&#xff0c;需输入两次 sudo password good9993、给用户设置最高权限&…

海外動態IP與海外靜態IP的區別詳解 - okey proxy

根據分配方式的不同&#xff0c;IP地址可以分為靜態IP和動態IP。那麼&#xff0c;海外動態IP和海外靜態IP又有什麼區別呢&#xff1f;本文將詳細解析。 海外動態IP是什麼&#xff1f; 海外動態IP是動態分配的海外IP地址。每次用戶上網時&#xff0c;都會從服務提供商的IP地址池…

window中安装Apache http server(httpd-2.4.58-win64-VS17)

windows中安装Apache http server(httpd-2.4.58-win64-VS17) 1、下载windows版本的的httpd, https://httpd.apache.org/docs/current/platform/windows.html#down 这里选择的是Apache Lounge编译的版本 https://www.apachelounge.com/download/ 2、解压到指定目录&#xff0c;这…

python函数装饰器参数统计调用时间和次数

1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参&#xff0c;供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间&#xff0c;以及调用次数。 …

C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行

一、打开Visual Studio&#xff0c;创建项目->Windows 服务(.NET Framework) 二、点击Service.cs 点击切换到代码视图 static Timer Timer; private Thread monitorThread; private static string logFilePath; private static Process winFormsProcess; public Service1(…

如何修复DLL错误或丢失的问题,这里提供几种方法

DLL错误是指DLL文件的任何错误&#xff0c;一种以.dll文件扩展名结尾的文件。 DLL错误可能出现在微软的任何操作系统中&#xff0c;包括Windows 10、Windows 8、Windows 7、Windows Vista和Windows XP。 DLL错误尤其麻烦&#xff0c;因为存在许多这样类型的文件&#xff0c;所…

obgs格式能通过Dasviewer导入到Revit吗?

答&#xff1a;Dasviewer可以支持las转换osgb&#xff0c;再通过osgb转换fbx或者obj。当然也可以通过重建的方式建模。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三…

入门教程:使用 Postman 发送 post 请求

Postman 是一个实用的开发工具&#xff0c;它让发送各类 POST 请求成为了可能&#xff0c;包括文本、JSON、XML 以及文件等。开发者利用此工具不仅能够检验API的功能性&#xff0c;还能仿真客户端的请求行为&#xff0c;进而深入了解客户端如何与 API 进行互动。 HTTP 协议中的…

半小时实现GPT纯血鸿蒙版

仅需半小时&#xff0c;即可实现纯血鸿蒙版本的ChatGPT&#xff01; 废话少说&#xff0c;先看效果图&#xff1a; 如上图所示&#xff0c;这个小Demo实现了AI智能问答。靠右加粗的文本是用户点击底部提交按钮后出现的&#xff1b;后面靠左对齐的普通文本是来自AI的回答内容。…

MySQL与Java JDBC数据类型对照

MySQL数据类型JAVA数据类型JDBC TYPEBIGINTLongBIGINTTINYINTByteTINYINTSMALLINTShortSMALLINTMEDIUMINTIntegerINTEGERINTEGERIntegerINTEGERINTIntegerINTEGERFLOATFloatREALDOUBLEDoubleDOUBLEDECIMALBigDecimalDECIMALNUMERICBigDecimalNUMERICCHARStringCHARVARCHARStrin…

(第48-59讲)STM32F4单片机,FreeRTOS【事件标志、任务通知、软件定时器、Tickless低功耗】【纯文字讲解】【原创】

文章目录 &#x1f534;&#x1f7e1;&#x1f7e2;其他文章链接&#xff0c;独家吐血整理1、纯文字&#xff08;待补充&#xff09; &#x1f534;&#x1f7e1;&#x1f7e2;其他文章链接&#xff0c;独家吐血整理 【吐血总结】FreeRTOS难点、Systick中断-滴答定时器、PendS…

ES6语法详解+面试必备

ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript的一个版本&#xff0c;它于2015年发布。ES6引入了很多新的语法和功能&#xff0c;使得JavaScript更加强大、灵活和易于使用。 一、块级作用域&#xff1a; ES6引入了let和const关键字&#xff0c;可以在块级作用域中…