两周掌握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.mfbz.cn/a/313322.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【开源】类似创客贴图片编辑器的项目及前端组件

yft-design: 基于fabric.js的图片设计&#xff0c;使用 Vue3 TypeScript fabric.js pinia element-plus pwa&#xff0c;支持 文字、图片、形状、线条、二维码 、条形码几种最常用的元素类型&#xff0c;每一种元素都拥有高度可编辑能力&#xff0c;缩略图显示&#xff0c;…

《2024 年 Web3.0 数字资产趋势报告》(三)

撰文&#xff1a;方军、周芳鸽、李祺虹、张睿彬&#xff0c;Uweb 编辑&#xff1a;Nona&#xff0c;Techub News 点击关注公众号获取完整报告 接下来我们将继续和大家分享《2024 年 Web3.0 数字资产趋势报告》中其余部分。

计算机网络面试八股复习:常见的Http状态码

前言 面试被问到过一次。自己最近使用Gin框架&#xff0c;在Response的时候有时候也会用到一个自定义的状态码。因此归纳一下这方面&#xff0c;供自己日后面试复习以及开发时候参考。 HTTP 全名“超文本传输协议”&#xff08;我也不懂为什么面试官问这个…&#xff09; 属…

【Linux】常见指令解析下

目录 前言1. cp指令&#xff08;重要&#xff09;2. mv指令 &#xff08;重要&#xff09;3. cat指令4. more指令5. less指令 &#xff08;重要&#xff09;6. head指令7. tail指令8. 时间相关的指令8.1 data显示8.2 时间戳 9. cal指令10. find指令&#xff08;非常重要&#x…

【天龙怀旧服】攻略day5

关键字&#xff1a; 天鉴扫荡、举贤、燕子水路 1】85天鉴任务可以扫荡 在流派选择npc那里&#xff0c;花费40交子即可扫荡100点&#xff0c;可以兑换10个灵武打造图&#xff1b; 此外打造图绑定不影响做出来的灵武绑定&#xff0c;只要对应的玉不绑灵武就不绑定 2】冠绝师门…

浅谈电能管理系统在智能轨道交通中的设计与应用——安科瑞 顾烊宇

摘要&#xff1a;城市轨道交通可以填补市民出行方式的空缺&#xff0c;它的运行需要有持续的电能提供支持。为了给轨道交通营造稳定的运行环境&#xff0c;迫切需要建立相应的电能管理系统&#xff0c;以此实现高质量的电能供给。在本文中&#xff0c;将对应的电能管理系统作为…

VUE+bpmn.js实现工作流

1、安装bpmn.js npm install bpmn-js7.3.1 // 我安装的版本是7.3.1npm install bpmn-js-properties-panel0.37.2npm install bpmn-moddle7.1.3 npm install --save camunda-bpmn-moddle 2、配置axios&#xff0c;在main.js中引入axios import axios from axiosVue.proto…

前端项目优化:减少webpack打包体积

前言 最近自己买个云服务器,把之前搭建的webpack-vue项目进行了部署,现在项目已经成功了。 项目地址:GitHub - wjt162286793/webpack----vue: 使用webpack配置一个脚手架,对照文档,纯手打 线上地址:IAM架构资产管理系统 不过是没有经过任何优化的,虽然项目体积和业务不是很复…

为什么要做性能测试?

什么是性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试&#xff0c;负载测试和压力测试都属于性能测试&#xff0c;两者可以结合进行。通过负载测试&#xff0c;确定在各种工作负载下系统的性能&#xff0c;目标是…

磷酸铁锂电池生产污废水需要哪些工艺及设备

磷酸铁锂电池作为一种常见的锂离子电池&#xff0c;已广泛应用于电动汽车、储能系统等领域。然而&#xff0c;在磷酸铁锂电池的生产过程中&#xff0c;难免会产生一定量的污废水。为了有效处理和处理这些污废水&#xff0c;我们需要合适的工艺和设备。 首先&#xff0c;针对磷酸…

xtu oj 1520 方程组

题目描述 求 &#xff0c;其中x≤y 的整数解。 输入格式 第一行是一个整数T (1≤T≤1000)&#xff0c;表示样例的个数。 第二行是两个整数n, n∈[−109,109]和m, m∈[0,109]。 输出格式 依次输出一个样例的结果。 输出一行&#xff0c;为两个整数,之间用一个空格隔开;如果…

解决 微信公众号token一直莫名其妙出现token过期问题

1.问题描述 微信公众号获取 Access token 开发文档 在开发公众号的过程中&#xff0c;一直莫名其妙出现公众号 token 过期的情况&#xff0c;明明还在 token 的有效时间范围内&#xff0c;明明微信文档写的 access_token 有近2小时的有效时间。所以我缩短了 token 存到 redis…

定时任务框架-xxljob

spring传统的定时任务Scheduled&#xff0c;但是这样存在这一些问题 &#xff1a; 做集群任务的重复执行问题 cron表达式定义在代码之中&#xff0c;修改不方便 定时任务失败了&#xff0c;无法重试也没有统计 如果任务量过大&#xff0c;不能有效的分片执行 1.分布式任务调…

Adobe Photoshop AI正版来了,手把手教你注册

首先声明&#xff0c;官方正版Adobe Photoshop AI正版需要收费&#xff0c;一年180左右。 好了&#xff0c;下面开始提供完整的注册步骤 第一步&#xff1a;注册Adobe账号教程&#xff08;免科学&#xff09; 支持Adobe付款卡&#xff0c;点击获取 注册一个新的微软邮箱&am…

深入探索JavaScript中实用而高级的Rest参数和Spread语法

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 函数是JavaScript这个语言的核心,而如何处理函数的参数是函数编程中非…

使用Openssl生成Https免费证书以及Nginx配置

1 证书和私钥的生成 1.创建服务器证书密钥文件 server.key&#xff1a; openssl genrsa -des3 -out server.key 2048 输入密码&#xff0c;确认密码&#xff0c;自己随便定义&#xff0c;但是要记住&#xff0c;后面会用到。 2.创建服务器证书的申请文件 server.csr openssl r…

在linux中 centos7 连接xhell

网卡配置 仅主机要对应仅主机模式&#xff0c;NAT模式要对应NAT模式 一、在linux中centos7 连接xhell 实验&#xff1a;NAT模式对应NAT模式 以192.168.246.0段为例 1.进入虚拟机: 2.去真机修改&#xff1a; 3.然后去虚拟机里&#xff1a; 4.进入xhell修改&#xff1a; 再输…

Python——python练习题

1.小明身高1.75&#xff0c;体重80.5kg。请根据BMI公式&#xff08;体重除以身高的平方&#xff09;帮小明计算他的BMI指数&#xff0c;并根据BMI指数&#xff1a; 低于18.5&#xff1a;过轻 18.5-25&#xff1a;正常 25-28&#xff1a;过重 28-32&#xff1a;肥胖 高于32&…

互信息法的原理详解

文章目录 互信息法&#xff08;上&#xff09;互信息是什么从信息增益角度理解互信息从变量分布一致角度理解互信息 卡方检验与离散变量的互信息法 互信息法&#xff08;上&#xff09; 尽管f_regression巧妙的构建了一个F统计量&#xff0c;并借此成功的借助假设检验来判断变…

GitLab 502 Whoops, GitLab is taking too much time to respond. 解决

1、先通过gitlab-ctl restart进行重启&#xff0c;2分钟后看是否可以正常访问&#xff0c;为什么要2分钟&#xff0c;因为gitlab启动会有很多配套的服务启动&#xff0c;包括postgresql等 2、如果上面不行&#xff0c;再看gitlab日志&#xff0c;通过gitlab-ctl tail命令查看&…
最新文章