Vue的学习(三)

目录

一、for循环中key的作用

1‌.提高性能‌:

‌2.优化用户体验‌:

‌3.辅助Vue进行列表渲染‌:

4‌.方便可复用组件的使用‌:

二、methods及computed及wacth的区别

三、过滤器

1.Vue 2 过滤器简介

定义过滤器

使用过滤器

过滤器的串联

注意事项

2.代码示例

3.实现的效果如下:

四、双向数据绑定的原理

五、生命周期钩子函数

1.beforeCreate:

2.created:

3.beforeMount:

4.mouted:

5.beforUpdate:

6.Updated:

7.beforeDestroy:

8.destroyed:

9.activaed:

10.deactivated:

11.errorCapture:

六、结束语


一、for循环中key的作用

在Vue中,使用v-for指令进行列表渲染时,为每个循环的元素添加一个唯一的key属性是非常重要的。这个key的作用主要包括以下几个方面:

1‌.提高性能‌:

Vue通过key属性对每个循环生成的元素进行标识。当数据发生变化时,Vue可以更加高效地识别出新旧元素的对应关系,从而尽可能地复用已经存在的元素,减少重新渲染的开销,提高页面的性能表现‌1。

‌2.优化用户体验‌:

添加key属性可以确保列表中的元素保持稳定的身份,当数据发生变化时,Vue会尽可能地保持之前元素的状态,而不是重新创建或销毁元素,从而避免页面的闪烁或抖动现象,提供更加流畅的用户体验‌1。

‌3.辅助Vue进行列表渲染‌:

在使用v-for指令进行循环渲染时,Vue需要借助key属性来辅助判断列表中的元素是否发生了变化,以决定是否需要重新渲染列表。如果没有提供key属性,Vue会默认使用每个元素在数组中的索引作为key值,但这样会导致问题‌。

4‌.方便可复用组件的使用‌:

添加key属性可以方便地重置组件的内部状态,使组件可以被多次复用,并且每次复用时都能保持独立的状态,而不会被之前的状态所影响‌。

需要注意的是,key属性的值应该是唯一的,并且稳定不变的。最好使用每个元素在数据源中的唯一标识作为key值,避免使用索引(index)来作为key值,以免出现错误的渲染结果‌。

总之,key属性在Vue的循环渲染中起到了重要的作用,可以优化性能、提升用户体验、方便组件复用,是开发Vue应用时不可忽视的重要属性‌。

二、methods及computed及wacth的区别

 介绍:vue.js当中computed和watch都是响应式的一部分,负责根据数据的变化来处理相关的逻辑,但是他们有着非常不同的使用场景和工作机制。而methods是Vue实例中的一个选项,用于定义在Vue实例中可以调用的方法。这些方法可以在模板中通过调用来执行。

  • methods:  methods定义的方法是需要手动调用的,通过调用方法来执行相应的逻辑。用于定义组件的行为或函数,其内的代码在每次调用时都会重新执行。没有缓存机制,无论何时调用都会重新计算和执行。适用于处理事件或触发特定的逻辑场景。
  • computed:  computed是计算属性,用于基于已有相应式数据进行计算,返回一个新的值。具有缓存机制,只有当相关依赖的数据发生变化时才会重新计算。适用于需要依赖多个响应式数据进行复杂计算的场景。
  • watch:  watch是用于侦听属性变化的。你可以对某个响应式数据做实际操作或执行代码,比如发起异步请求或手动更新数据,适合需要进行一些副作用操作场景。watch适用于需要在数据变化时执行某些业务逻辑的场合。

三、过滤器

1.Vue 2 过滤器简介

在Vue 2中,过滤器(Filters)是一种非常有用的功能,它允许开发者对模板中的文本进行格式化处理。这些过滤器可以被视为一种特殊的函数,它们接收一个或多个参数(通常是模板中的文本值),并返回处理后的文本。

定义过滤器

  • 局部过滤器:这些过滤器定义在Vue实例的filters选项中。它们只在该Vue实例的模板中可用。
  • 全局过滤器:通过Vue.filter()方法定义的过滤器可以在任何Vue实例的模板中使用。这种过滤器在应用范围内是全局可访问的。

使用过滤器

在Vue模板中,你可以通过管道符(|)来应用过滤器。将过滤器应用于模板中的表达式时,表达式的值会作为参数传递给过滤器函数,并显示过滤器函数的返回值。

例如,如果你有一个显示日期的数据,并希望将其格式化为更易读的格式,你可以定义一个日期格式化过滤器,并在模板中通过管道符将其应用于日期数据。

过滤器的串联

Vue 2的过滤器支持串联使用,即一个过滤器的输出可以作为下一个过滤器的输入。这使得你能够轻松地将多个过滤器组合起来,实现复杂的文本处理逻辑。

注意事项

  • 过滤器主要用于文本格式化,不应该用于处理复杂的逻辑或改变数据的状态。
  • 在Vue 3中,官方移除了对过滤器的支持,转而推荐使用计算属性(Computed Properties)或方法(Methods)来实现类似的功能。这是因为过滤器虽然简单,但在大型项目中容易被滥用,导致逻辑难以追踪和维护。

2.代码示例

这里我们使用了一个过滤器,来将input框中的小写字符通过过滤器变成大写字母,在div中展示。

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./../day_01/js/vue.js"></script>
</head><body><div id="app"><input type="text" v-model="msg"><div>{{msg | toUpper}}</div></div><script>//全局过滤器//Vue.filter("过滤器名称",回调函数)//注意:全局过滤器必须写在new Vue() 之前Vue.filter("toUpper", function (val) {console.log("val", val);return val.toUpperCase();})const vm = new Vue({el: "#app",data: {msg: ''}})</script>
</body></html>

3.实现的效果如下:

四、双向数据绑定的原理

  1. 当数据模型中的属性值发生变化时,Vue会通过getter和setter来获取和更新数据。

  2. 当模板中的绑定表达式发生变化时,Vue会通过指令或插值表达式将变化的值传递给对应的数据模型。

  3. Vue内部会通过使用Object.defineProperty()方法对数据模型的属性进行劫持,实现数据的响应式。

  4. 当数据模型的属性值发生变化时,Vue会通过观察者模式通知订阅了该属性的指令和组件更新视图。

  5. 更新视图时,Vue会使用Virtual DOM(虚拟DOM)对比新旧DOM树的差异,然后只更新差异部分的真实DOM,提高渲染效率。

  6. 当用户在视图中进行交互操作时,例如输入框输入文字,Vue会监听到事件并通过事件处理函数更新对应的数据模型。

五、生命周期钩子函数

1.beforeCreate:

创建前  无法通过 vm 实例 访问 data中的数据  以及 methods中的方法.

2.created:

创建后  可以通过 vm 实例 访问 data中的数据  以及 methods中的方法

3.beforeMount:

挂载前  页面呈现的是未经Vue编译的DOM结构;所有对DOM的操作,最终都不奏效

4.mouted:

vue 完成模板的解析并把初始的真实DOM元素放入页面后(挂载完毕)调用, 此时页面呈现的都是经过Vue编译的DOM。对DOM的操作均有效。

至此初始化过程结束,一般再次进行:开启定时器、发送网络请求、订阅消息、绑定自定义事件等初始化操作。

5.beforUpdate:

更新前  数据是新的  页面是旧的   页面与数据不同步

6.Updated:

更新后  数据是新的  页面也是新的   页面与数据同步

7.beforeDestroy:

销毁前  Vue中的 data 及 methods 及 指令 目前都处于可用状态  一般再此阶段取消定时器,取消订阅的消息,解绑自定义的事件等收尾工作.

8.destroyed:

销毁后,此时组件已经被完全销毁,实例中的所有数据,方法,属性,过滤器等都不可以再次使用了。

9.activaed:

组件激活时,和上面的beforDestroy和destroyed用法差不多,但是如果我们需要一个实例,在销毁后再次出现的话,用beforeDestroy和destroyed的话,就太浪费性能了。实例被激活时使用,用于重复激活一个实例的时候。

10.deactivated:

组件未激活时。

11.errorCapture:

错误调用,当捕获一个来自后代组件错误时被调用。

六、结束语

在结束这篇博文之际,我想借此机会再次感谢每一位耐心阅读至此的你。无论是文字间的共鸣,还是观点上的碰撞,都是对我莫大的鼓励与支持。我们共同探索了知识的海洋,分享了思考的火花,或许在某个不经意的瞬间,这些交流已经悄然在你我心中种下了新的灵感与启迪。

在这个信息爆炸的时代,能够静下心来,深入某一领域或话题,本身就是一种难能可贵的品质。希望这篇博文不仅为你提供了一些有价值的信息和见解,更能激发你对世界的好奇心与探索欲。记住,学习是一场没有终点的旅行,让我们携手并进,在未知的旅途中不断发现、学习、成长。

未来,我将继续带着这份热爱与责任,笔耕不辍,努力为大家带来更多有深度、有温度的内容。期待在下一篇文章中,再次与你相遇,共同开启新的知识探索之旅。

最后,如果你喜欢这篇文章,不妨点个赞、分享给你的朋友,或者留下你的宝贵评论,你的反馈是我前进的动力。再次感谢,愿你的每一天都充满阳光与希望,待下一次与各位宝子再次进行交流,我们下篇文章见!

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

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

相关文章

map与set

目录 关联式容器 键值对 树形结构的关联式容器 set 注意 set的使用 set的模板参数列表 set的构造 set的迭代器 set修改操作 set的使用举例 map map的使用 map的迭代器 map的容量与元素访问 注意 map中元素的修改 总结 multiset 注意 multiset的使用 multi…

基于中心点的目标检测方法CenterNet—CVPR2019

Anchor Free目标检测算法—CenterNet Objects as Points论文解析 Anchor Free和Anchor Base方法的区别在于是否在检测的过程中生成大量的先验框。CenterNet直接预测物体的中心点的位置坐标。 CenterNet本质上类似于一种关键点的识别。识别的是物体的中心点位置。 有了中心点之…

【重学 MySQL】二十二、limit 实现分页

【重学 MySQL】二十二、limit 实现分页 基本语法实现分页第一页第二页通用公式注意事项在 MySQL 中,LIMIT 子句非常强大,它允许你限制查询结果的数量,同时也经常被用来实现分页功能。分页是 Web 开发中常见的需求,它允许用户浏览大量数据时,一次只查看一小部分数据。 基本…

unity3d入门教程四

unity3d入门教程四 10.1坐标与旋转10.2物体的运动10.3&#xff08;练习&#xff09;掉头飞行11.1向量11.2向量间运算11.3向量夹角11.4物体的指向11.5&#xff08;练习&#xff09;飞向目标12.1屏幕坐标12.2屏幕的边界 10.1坐标与旋转 比如&#xff0c;节点的坐标用 Vector3 类型…

数据结构-线性表顺序单项链表双向链表循环链表

1数据结构概述 数据结构是计算机组织、存储数据的方式。是思想层面的东西&#xff0c;和具体的计算机编程语言没有关系。可以用任何计算机编程语言去实现这些思想。 1.1 数据逻辑结构 反映数据逻辑之间的逻辑关系&#xff0c;这些逻辑关系和他们咱在计算机中的存储位置无关。…

apache文件共享和访问控制

实现apache文件共享 文件共享路径 <Directory "/var/www/html"> #默认发布路径&#xff0c;功能限制 Options Indexes FollowSymLinks #indexes支持文件共享功能 AllowOverride None Require all granted </Directory> 进入到该路径下 cd…

为什么sqlynx是连接国产数据库的最佳选择?

1. 广泛的国产数据库支持 SQLynx除了国际上的主流数据库外&#xff0c;还支持多种国产数据库&#xff0c;如达梦、人大金仓、OceanBase、openGauss等。随着国产数据库市场的不断发展和成熟&#xff0c;越来越多的企业和机构开始选择国产数据库来满足其数据管理需求。SQLynx通过…

WebGL系列教程三(使用缓冲区绘制三角形)

目录 1 前言2 缓冲区介绍3 声明顶点的位置和颜色4 回忆Shader的初始化5 开始缓冲区的逻辑5.1 声明顶点坐标5.2 创建并绑定缓冲区5.3 获取顶点着色器中的变量5.4 使变量从缓冲区取值5.5 绘制5.6 完整代码 6 总结 1 前言 上一篇中我们介绍了WebGL的环境搭建及Shader的初始化&…

webpack - 五大核心概念和基本配置(打包一个简单HTML页面)

// 五大核心概念 1. entry&#xff08;入口&#xff09; 指示Webpack从哪个文件开始打包2. output&#xff08;输出&#xff09; 指示Webpack打包完的文件输出到哪里去&#xff0c;如何命名等3. loader&#xff08;加载器&#xff09; webpack本身只能处理js&#xff0c;json等…

51单片机快速入门之定时器和计数器

51单片机快速入门之定时器 断开外部输入 晶振振荡 假设为 12MHz 12分频之后,为1MHz 当其从0-65536 时,需要65536μs 微秒 也就是65.536ms 毫秒 溢出(值>65536 时)>中断>执行中断操作 假设需要1ms后产生溢出,则需要设置初始值为64536 此时定时器会从 64536 开始计…

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示 $str $_GET["name"]; //接受URL来的get形式的name传参 echo "<h2 aligncenter>欢迎用户".$str."</h2>";//在网页输出&#x…

引领AI PC浪潮,Arm人工智能创新应用大赛火热报名中

AI PC&#xff0c;即搭载人工智能技术的个人电脑&#xff0c;正成为个人电脑市场的新宠儿。而正在如火如荼进行中的 Arm人工智能创新应用大赛&#xff0c;则为敏锐的开发者探索 AI PC 应用开发掘金之路提供了平台。 点击报名 挑战10万奖金池 AI PC 增长强劲&#xff0c;年出货…

【Hadoop|HDFS篇】HDFS的读写流程

1. HDFS的写流程 1.1 剖析文件的写入 副本存储节点的选择问题&#xff1a; 第一个副本在Client所在的节点上&#xff0c;如果客户端在集群外&#xff0c;随机选一个。第二个副本在另一个机架的随机一个节点上。第三个副本在第二个副本所在的机架的随机节点上。 2. HDFS的写流…

2024CCPC网络预选赛

vp链接&#xff1a;Dashboard - The 2024 CCPC Online Contest - Codeforces B. 军训 II 序列 a 从小到大排列或者从大到小排列时&#xff0c;不整齐度是最小的。方案数是所有相同数字的个数的排列数的乘积。如果首尾的数字不同的话&#xff0c;还要再乘个 2。 #include <…

Social Network Influence Maximization Based on Graph Attention Mechanisms

摘要 社交网络中的关键节点对整个网络具有重要的影响力&#xff0c;而社交网络中的一些节点可能位于网络的中心&#xff0c;而另一些节点则可能位于网络的边缘&#xff0c;传统的影响力最大化算法忽略了这种不平衡。通过忽略位于网络边缘但连接到中心的节点来导致信息的传播。为…

Java项目: 基于SpringBoot+mybatis+maven医院管理系统(含源码+数据库+任务书+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven医院管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)

LeetCode 启动&#xff01; 每日一题的题解重新开始连载&#xff01; 题目&#xff1a;预算内的最多机器人数目 题目链接&#xff1a;2398. 预算内的最多机器人数目 题目描述 代码与解题思路 func maximumRobots(chargeTimes []int, runningCosts []int, budget int64) (an…

期权组合策略有什么风险?期权组合策略是什么?

今天期权懂带你了解期权组合策略有什么风险&#xff1f;期权组合策略是什么&#xff1f;期权组合策略是通过结合不同期权合约&#xff08;如看涨期权和看跌期权&#xff09;&#xff0c;以及标的资产&#xff08;如股票&#xff09;来实现特定投资目标的策略。 期权组合策略市…

改进大语言模型的最全方法!

这是一篇关于适应开源大语言模型&#xff08;LLMs&#xff09;的三部系列博客的第一篇。本文探讨将LLM适应领域数据的各种方法。 第二部分讨论如何确定微调&#xff08;fine-tuning&#xff09;是否适合您的用例。第三部分探讨策划良好训练数据集的一些经验法则。 0 引言 大…

【IP协议】IP协议报头结构(上)

IP 协议报头结构 4位版本 实际上只有两个取值 4 > IPv4&#xff08;主流&#xff09;6 > IPv6 IPv2&#xff0c;IPv5 在实际中是没有的&#xff0c;可能是理论上/实验室中存在 4位首部长度 IP 协议报头也是变长的&#xff0c;因为选项个数不确定&#xff0c;所以报头长…