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.mzph.cn/bicheng/53987.shtml

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

相关文章

用 Swift 写 Android App ?来了解下 Skip 原生级跨平台框架

最近在找资料的时候&#xff0c;机缘巧合发现了一个有趣的商业跨平台框架 Skip &#xff0c;刚好看到了它发布 1.0 正式版&#xff0c;主要作用是将 Swift 开发引入到 Android 领域&#xff0c;这样 App 就可以共享 Swift 的业务逻辑&#xff0c;在 SwiftUI 中完成 Android App…

Python | Leetcode Python题解之第395题至少有K个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; class Solution:def longestSubstring(self, s1: str, k: int) -> int:if k 1: return len(s1)n len(s1)res 0for c in range(1, len(set(s1)) 1):# 滑窗中字母种类个数恰好为 cfreq Counter()l cnt tcnt 0 for r, ch in enu…

代码随想录训练营Day3 | 链表理论基础 | 203.移除链表元素 | 707.设计链表 | 206.反转链表

今天任务&#xff1a;学习链表理论基础 链表的类型 链表的存储方式 链表的定义…

开发一款通过蓝牙连接控制水电表的微信小程序

增强软硬件交互 为了更好的解决师生生活中的实际问题&#xff0c;开发蓝牙小程序加强了和校区硬件的交互。 比如通过蓝牙连接控制水电表&#xff0c;减少实体卡片的使用。添加人脸活体检测功能&#xff0c;提高本人认证效率&#xff0c;减少师生等待时间。 蓝牙水电控展示 蓝…

HashMap常用方法及底层原理

目录 一、什么是HashMap二、HashMap的链表与红黑树1、数据结构2、链表转为红黑树3、红黑树退化为链表 三、存储&#xff08;put&#xff09;操作四、读取&#xff08;get&#xff09;操作五、扩容&#xff08;resize&#xff09;操作六、HashMap的线程安全与顺序1、线程安全2、…

【LeetCode每日一题】2024年9月第二周(上)

2024.9.9 中等 难度评分 1333 链接&#xff1a;2181. 合并零之间的节点 &#xff08;1&#xff09;题目描述&#xff1a; &#xff08;2&#xff09;示例 &#xff08;3&#xff09;分析 整体来说&#xff0c;描述还算清晰的题目&#xff0c;找到0节点所框定的区域&#xff0c…

Pandas读取某列、某行数据——loc、iloc区别

loc&#xff1a;通过行、列的名称或标签来索引 iloc&#xff1a;通过行、列的索引位置来寻找数据 首先&#xff0c;我们先创建一个DataFrame生成数据 import pandas as pddata {a:[1,2,3,4,5],b:[6,7,8,9,10],c:[11,12,13,14,15] } data pd.DataFrame(data) print(data) 运行…

工具、环境等其他小问题归纳

此篇文章内容会不定期更新&#xff0c;仅作为学习过程中的笔记记录 一、查询Windows 10环境下python版本与安装路径 若电脑成功安装了python环境&#xff0c;不小心忘了版本。 I、查询版本 1、cmd窗口快捷查询 Win R 输入cmd 进入窗口&#xff1b; 直接输入 python --version …

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2757 标注数量(xml文件个数)&#xff1a;2757 标注数量(txt文件个数)&#xff1a;2757 标注…

关于武汉芯景科技有限公司的IIC电平转换芯片XJ9517开发指南(兼容PCF9517)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.电平转换 2.芯片使能/失能 EN 引脚为高电平有效&#xff0c;内部上拉至 VCC&#xff08;B&#xff09;&#xff0c;允许用户选择中继器何时有效。这可用于在上电时隔离行为不良的从机&#xff0c;直到…

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪 苏州新利通 Ceyear 4052具备出色的测试动态范围、相位噪声、幅度精度和测试速度&#xff0c;具备频谱分析、I/Q分析、实时频谱分析、瞬态分析、矢量信号分析、脉冲分析、音频分析等丰富的测试功能。 Ceyear…

OpenAI发布o1预览模型:推理能力更强可达理科博士生水准

近日OpenAI宣布推出了新一代 AI 模型系列 OpenAI o1&#xff0c;按照官方技术博客说法&#xff0c;o1 在推理能力上代表了人工智能最强的水平。 那究竟是怎么一回事呢&#xff1f; OpenAI CEO Sam Altman 表示&#xff1a;o1 系列的推出代表了 AI 能力的新起点&#xff0c;能…

240909-ChuanhuChatGPT集成Ollama的环境配置

A. 最终效果 B. 需求文件 requirements.txt (至少需要安装这个&#xff0c;具体参见官网)requirements_advanced.txt &#xff08;如果安装了Ollama&#xff0c;并且可以进行对话&#xff0c;可以不需要安装&#xff0c;具体参见官网&#xff09;requirements_succcess.txt&am…

gin配置swagger文档

一、基本准备工作 1、安装依赖包 go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files2、在根目录上配置swagger的路由文件 //2.初始化路由router : initialize.Routers()// 配置swaggerdocs.SwaggerInfo…

微服务杂谈

几个概念 还是第一次听说Spring Cloud Alibaba &#xff0c;真是孤陋寡闻了&#xff0c;以前只知道 SpringCloud 是为了搭建微服务的&#xff0c;spring boot 则是快速创建一个项目&#xff0c;也可以是一个微服务 。那么SpringCloud 和 Spring boot 有什么区别呢&#xff1f;S…

Unity for Android使用蓝牙低功耗Bluetooth LE

Unity2021.3.35f1 插件&#xff1a;Bluetooth LE for iOS and Android v2.3.unitypackage 1、将插件资源包导入unity中 2.修改插件中的AndroidManifest文件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schem…

系统优化工具 | PC Cleaner v9.7.0.3 绿色版

PC Cleaner是一款功能强大的电脑清理和优化工具&#xff0c;旨在通过清理系统垃圾文件、解除恶意软件和优化系统性能来提高计算机的运行效率。该软件提供了多种功能&#xff0c;可以帮助用户维护和提升计算机的整体表现。 PC Cleaner 支持 Windows 7 及以上操作系统&#xff0…

Qt使用绿色pdf阅读器打开文件

1.下载SumatraPDF 2.设置 3.代码 void MainWindow::on_pushButton_clicked() {QProcess *process new QProcess();QString filePath "C:\\Users\\jude\\Desktop\\su\\11.pdf";QString sumatraPath "C:\\Users\\jude\\Desktop\\su\\SumatraPDF-3.5.2-64.exe&q…

电瓶车火灾频发背后的隐忧

近年来&#xff0c;电瓶车火灾事件频发&#xff0c;不仅严重威胁着人民群众的生命财产安全&#xff0c;也给社会带来了极大的安全隐患。从城市街道到居民小区&#xff0c;电瓶车火灾的阴影无处不在&#xff0c;如何有效防范与自救成为了全社会关注的焦点。 一、电瓶车火灾频发…

linux_L1_linux重启服务器

使用putty登录到linux服务器切换到管理员账号 sudo -s重启命令 reboot