Vue3_2024_4天【computer、watch、method在Vue2~3中的说明】未完待补

第一:从概念上介绍~~vue中计算属性、方法、监听器(以Vue2描述)
1.计算属性 (Computed Properties):
  • 1.概念: 计算属性是基于响应式依赖进行缓存的属性,只有在相关依赖发生改变时才会重新求值。它们类似于具有缓存的函数。
  • 2.使用场景: 适用于依赖于其他数据或状态的属性,例如:购物车的结算计算价格、动态表格数据-表头和表体关系处理显示问题,(还例如:数据进行过滤、排序或计算衍生值等场景)。
    语法: 在Vue实例中使用computed对象定义计算属性,并以函数的形式返回计算结果。
computed: {fullName() {return this.firstName + ' ' + this.lastName;}
}
2.方法 (Methods):
  • 1.概念: 方法是在调用时执行的函数,不会进行缓存,每次调用都会重新执行函数体内的逻辑。
  • 2.使用场景: 适用于需要在事件触发或者动态计算时执行的逻辑,不涉及到数据的依赖关系。
    语法: 在Vue实例中使用methods对象定义方法,可以在模板中通过调用方法名来触发相应的函数。
methods: {greet() {alert('Hello, ' + this.name + '!');}
}
3.监听器 (Watchers):
  • 1.概念: 监听器是用来响应数据变化并执行自定义逻辑的方式,可以对数据的变化做出即时反应。
  • 2.使用场景: 适用于需要在数据变化时执行异步或复杂操作的情况,最常见:列表的搜索框模糊查询和,还比如发送网络请求或执行动画等。
    语法: 在Vue实例中使用watch对象来定义监听器,可以监听数据的变化并执行相应的回调函数。
watch: {counter(newValue, oldValue) {console.log('监听属性发生改变 ' + oldValue + ' to ' + newValue);}
}

总结:
*计算属性适合进行数据的计算和转换,具有缓存机制,适用于模板中使用。(缓存缘故–重复内容时,只执行一次)
*方法适合处理用户交互和事件响应等操作,代码在每次调用时都会执行。(无缓存—每一次调用都执行~~重复调用)
*监听器用于监听数据的变化,并执行相应的逻辑,适用于需要异步操作或者复杂逻辑的情况。

第二:Vue3中计算属性与监听器
1.vue3中的计算属性~简单使用、特点
  • 在Vue.js 2和Vue.js 3中,计算属性的核心功能是相同的,都是用来根据其他数据的变化而动态计算生成新的数据。然而,Vue.js 3对计算属性进行了一些改进和优化。
1.1使用
<template>  <div>  <p>原始计数: {{ count }}</p>  <p>计算后的计数: {{ doubledCount }}</p>  <button @click="incrementCount">增加计数</button>  </div>  
</template>  <script setup>  
import { ref, computed } from 'vue';  // 声明响应式引用  
const count = ref(0);  // 使用计算属性  
const doubledCount = computed(() => count.value * 2);  // 定义方法  
function incrementCount() {  count.value++;  
}  
</script>

代码说明:在这个例子中,我们定义了一个响应式引用 count,并使用 computed 函数创建了一个计算属性 doubledCount,它返回 count 的两倍。我们还定义了一个方法 incrementCount 来增加 count 的值。

特点:
  • 作用域:在 setup 语法糖中,所有的变量和方法都是默认导出的,所以你可以在模板中直接使用它们,无需再通过 return 语句显式导出。
  • 响应性:计算属性是响应式的,这意味着当它们的依赖项发生变化时,它们会自动更新。在上面的例子中,doubledCount 会根据 count 的变化自动更新。
  • 计算属性的缓存:计算属性是基于它们的依赖关系进行缓存的。只要依赖的响应式引用没有发生变化,多次访问计算属性会返回之前缓存的结果,而不会重新执行计算逻辑。
  • 避免在模板中直接使用复杂的逻辑:尽管你可以在模板中使用方法或计算属性来进行计算,但通常建议将复杂的逻辑放在计算属性中。这样,只有当依赖的响应式数据发生变化时,计算属性才会重新计算,这有助于提高性能。
  • 计算属性的可读性和维护性:使用计算属性可以让你的代码更加清晰和易于维护。你可以将计算逻辑封装在一个单独的属性中,而不是在模板或方法中散落各处。
2.Vu2计算属性与方法的区别:

计算属性是基于它们的依赖关系进行缓存的,而方法则不会。如果你需要的是一个不依赖于任何响应式状态、每次调用都会返回新结果的函数,那么应该使用方法。如果你需要的是一个依赖于响应式状态、并且希望在状态变化时自动更新的值,那么应该使用计算属性。

3.Vu2计算属性与Vue3计算属性的区别:
  • 3.1性能优化:
    Vue.js 3中的计算属性相比Vue.js 2有更好的性能表现。Vue.js 3使用了Proxy对象来追踪属性的变化,而不是Object.defineProperty,这使得计算属性的依赖追踪更加高效。

  • 3.2Composition API:
    Vue.js 3引入了Composition API,这为计算属性提供了更灵活的选项。在Vue.js 2中,计算属性必须定义在computed对象中,而在Vue.js 3中,你可以在任何地方使用computed()函数创建计算属性,这使得组织和重用代码更加方便。

  • 3.3响应式数据:
    在Vue.js 2中,计算属性的依赖会在组件渲染时被自动收集。而在Vue.js 3中,计算属性需要显式声明它们的依赖,这可以提高性能并减少不必要的重渲染。

总结:Vue.js 3中的计算属性相比Vue.js 2具有更好的性能和更灵活的API,特别是在使用Composition API时

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

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

相关文章

场景问题: VisualVM工具Profiler JDBC不是真实执行的SQL

1. 问题 诡异的问题表象&#xff1a; 前端反馈分页接口的Total字段一直为0 使用Visualvm中的 Profiler 注入到应用后&#xff0c;查看JDBC监控得到了分页接口执行的SQL&#xff0c;复制出来执行是55. 此时还没有注意到 IN 的范围中有一个特别的值 NULL &#x1f928; 2. 排查…

视觉Transformers中的位置嵌入 - 研究与应用指南

视觉 Transformer 中位置嵌入背后的数学和代码简介。 自从 2017 年推出《Attention is All You Need》以来&#xff0c;Transformer 已成为自然语言处理 (NLP) 领域最先进的技术。 2021 年&#xff0c;An Image is Worth 16x16 Words 成功地将 Transformer 应用于计算机视觉任务…

Windows C++:控制新进程的创建方式

目录 介绍 标志位介绍 代码示例 这些宏定义&#xff08;dwCreationFlag值&#xff09;是用于Windows操作系统中CreateProcess函数的标志&#xff0c;它们控制新进程的创建方式。下面是这些标志的中文介绍&#xff1a; 介绍 Winbase.h中的部分代码&#xff1a; // // Proc…

idea中引入新JDK环境

在不同的项目中往往会需要不同的运行环境&#xff0c;那么如何下载一个新的环境并运用到idea中呢&#xff1f; 下面给出的就是oracle官网&#xff0c;以JDK17为例教大家如何下载 Java Archive Downloads - GraalVM for JDK 17https://www.oracle.com/java/technologies/javase…

Python数据可视化库之bashplotlib使用详解

概要 在数据可视化领域,Python拥有许多优秀的库,如Matplotlib、Seaborn等,它们可以创建漂亮而复杂的图形。但是,有时候我们可能需要在终端中绘制简单的图形,这时候Bashplotlib就派上了用场。Bashplotlib是一个Python库,可以在终端中绘制基本的图形,如条形图、散点图等。…

YOLOV9训练集制作+Train+Val记录

一、YOLO数据集格式分布 在YOLO中&#xff0c;数据集的分布如图&#xff0c;在dataset文件夹下有imags&#xff08;图片&#xff09;和labels&#xff08;标签&#xff09;。在images和labels文件夹下又分别存放三个文件夹&#xff0c;分别对应测试集、训练集、验证集&#xff…

记一次异步转同步的经历

工作中会经常遇到一些对数据进行加工的场景&#xff0c;这些数据来自很多地方&#xff0c;一般通过HTTP、RPC等方式去调用&#xff0c;数据源返回的报文也一般都是JSON、XML等格式。其中大部分数据源是同步返回&#xff0c;但有些数据源是异步返回的(也就是说数据源的数据是数据…

Android 音乐播放器(暂停、下一首、上一首)

1.编写主页面&#xff0c;使用listview组件放置音乐列表信息 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/r…

使用postman测试若依其他业务接口API—3

请求方式 如上&#xff0c;使用Get请求来获取练习题库中的所有习题数据。 请求地址 在请求路径栏输入请求地址&#xff0c;以下图为例&#xff1a; 参数体与鉴权 在Parms键入所需参数&#xff0c;其中key为键,value为键的值&#xff1a;如下图所示&#xff1a; 认证成功与失…

持续集成(CICD)- gogs仓库的部署和使用

文章目录 一、gogs的介绍二、部署gog仓库三、首次启动gogs四、登录五、创建一个非空仓库六、从仓库拉取代码到本地七、把本地编辑的代码上传到仓库 一、gogs的介绍 Gogs作为一个轻量级、易于部署和使用的自托管Git服务&#xff0c;为小型团队和个人开发者提供了一个简单而强大…

【AIGC】如何提高Prompt准确度

前言 随着人工智能的迅猛进展&#xff0c;AIGC&#xff08;通用人工智能聊天工具&#xff09;已成为多个行业中不可或缺的自然语言处理技术。Prompt作为AIGC系统的一项关键功能&#xff0c;在工具的有效运作中发挥了举足轻重的作用。本篇文章将深入探讨Prompt与AIGC之间的紧密…

python笔记_程序流程控制2

C&#xff0c;循环控制 1&#xff0c;for循环 功能&#xff1a;让代码循环运行 语法&#xff1a; for <变量> in <范围、序列>&#xff1a; <循环操作语句> 例 nums &#xff08;1,2,3,4&#xff09; <class list> for i in nums&#xff1a; print&…

Java中文件的相关知识及文件IO操作

在我们日常生活中&#xff0c;会把许多东西都称之为文件。比如&#xff0c;一份纸质报告&#xff0c;或u盘中的一些文档&#xff0c;都会把它们称为文件。那么&#xff0c;这里说的文件是以操作系统的角度出发的。在操作系统中&#xff0c;会把许多硬件设备和软件资源都抽象成“…

ubuntu20.04安装nvidia驱动真实有效(被折磨了一天一夜的肝文!!!)

ubuntu20.04安装nvidia驱动真实有效 安装前后需要注意的安装nvidia驱动的教程 安装前后需要注意的 能找到这篇帖子说明你之前肯定有过无数次方法的尝试&#xff0c;这些尝试可能会影响下面教程的有效 1.下面这个指令可能会导致ubuntu内核的更新。内核更新可能会导致你的nvidia…

机器学习:主成分分析笔记

主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;是一种无监督的机器学习算法&#xff0c;通常用于高维数据的降维、提取主要特征、数据降噪和可视化。PCA的基本思想是将原始数据的多个变量转换为少数几个相互独立的变量&#xff08;即主成分&a…

shadertoy 游戏《来自星尘》摇杆复刻

正确的做法应该是上 noise 而不是叠加 sin 波&#xff0c;不过如果不想麻烦的话叠波还是一个不错的选择&#xff1a;整体效果如下&#xff0c;已经非常形似 直接上链接&#xff1a;Shader - Shadertoy BETA float radiusScale 0.9; float variation(vec2 v1, vec2 v2, float …

node.js 封装分页查询

node.js封装sql分页查询 方法&#xff1a; /*** 生成分页查询sql* param {string} table 表名* param {number} pageNum 分页页数 * param {number} pageSize 分页条数 * param {object} query 查询对象 例&#xff1a;{id:1,name:小明}* returns sql语句*/ const limit (ta…

Java零基础-反射

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

springboot/ssm供应商管理系统Java货物进销存管理系统web

springboot/ssm供应商管理系统Java货物进销存管理系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysq…

传感器---触摸传感器

一、模块选型概述 芯片型号&#xff1a;TTP223B 供电电压&#xff1a;3-5V 控制接口&#xff1a;共三个引脚&#xff08;GND、VCC、SIG&#xff09;&#xff0c;GND为地&#xff0c;VCC为供电电源&#xff0c;SIG为数字信号输出脚&#xff1b; PCB尺寸&#xff1a;24 x 24 mm 触…