vue3 ——笔记 (条件渲染,列表渲染,事件处理)

server/2024/10/9 15:17:02/

条件渲染

v-if

 v-if 指令用于条件性地渲染一块内容,只有v-if的表达式返回值为真才会渲染

v-else

 v-else 为 v-if 添加一个 'else' 区块     v-else 必须在v-if或v-else-if后

v-else-if

 v-else-if 是v-if 的区块 可以连续多次重复使用

v-show

按条件显示元素 v-show  用法和v-if 基本相同

v-if和v-show 相同不同之处

相同之处:

  1. 都可以用于根据条件动态显示或隐藏页面元素。
  2. 都是Vue框架提供的指令,用于简化条件渲染的操作。
  3. 都可以通过条件表达式来确定元素是否显示,提供了灵活性和控制性。

不同之处:

  1. 触发时机:v-if是惰性的,只有在条件为真时才会渲染对应的元素;而v-show在初始化时即渲染了所有元素,只是在条件为假时将元素的display属性设为none。
  2. 性能开销:由于v-if是惰性的,条件为假时对应的元素不会被渲染,因此在条件变化频繁时,v-if具有更好的性能表现;而v-show虽然会一直渲染元素,但只是通过修改display属性来切换元素的显示与隐藏,不会造成重新渲染。
  3. 编译过程:v-if在条件为假时,对应的元素不存在于DOM结构中,需要重新编译和渲染;而v-show在条件为假时,元素始终存在于DOM结构中,只是通过样式控制其显示与隐藏,不会触发重新编译。
  4. 用法场景:一般来说,对于需要频繁切换显示状态的元素,使用v-show会比较适合;而对于需要根据条件动态添加或移除元素的场景,使用v-if更为合适。

综上所述,v-if和v-show虽然都是用于条件渲染的指令,但在实际应用中根据不同的场景和需求选择合适的指令来实现条件渲染效果将更加高效和灵活。

v-if 和 v-for

当二者同时存在时,v-if会先执行

v-ifv-for同时存在于同一个元素上时,Vue会根据官方文档的建议发出警告。原因是v-for的优先级比v-if更高,这意味着v-for会先被解析,然后再解析v-if。这可能会导致不必要的性能开销,因为v-if会在每次迭代时都被执行,而不是在条件为真时执行。

在这种情况下,建议的最佳做法是将v-if移动到包裹元素上,而不是直接放在带有v-for的元素上。这样可以确保v-if只会在条件为真时才会被执行,而不会在每次迭代时都被执行,从而提高性能并避免潜在的错误。

总的来说,最好避免在同一个元素上同时使用v-ifv-for,以确保代码的可读性和性能。

列表渲染

v-for

使用v-for 基于一个数组来渲染一个列表,v-for 语法 每一项 in 数组

v-for 与对象

v-for 来遍历一个对象时

结构:(值 键名 下标 ) in 对象

在v-for 里使用范围值

v-fo 可以接受一个整数值 从1 开始

v-if 和 v-for

当它们存有一个标签上 v-if 优先级更高  v-if 无法访问到 v-for作用域定义的变量别名

解决方法 在标签上放上<template>

数组变化检测

 vue能监听响应式数组的变更方法,在它们被调用时触发的更新

 方法:能改变原数组的方法(push, pop, shift, unshift, splice, sort, resvers)

替换一个数组:对原数组进行修改,返回新的数组

 旧数组  = 新数组

展示过滤或排序的结果

创建 计算属性  面对多次嵌套时 使用函数和v-for配合

事件处理

在Vue 3中,事件处理与Vue 2类似,但有一些新的特性和语法。你可以使用v-on指令来监听DOM事件,并在触发时执行相应的方法。

<template><button @click="handleClick">点击我</button>
</template><script>
import { defineComponent } from 'vue';export default defineComponent({methods: {handleClick() {console.log('按钮被点击了!');}}
});
</script>

监听事件

使用 v-on 简写为@ 来监听dom事

内联事件处理器

内联事件处理器 :事件被触发时执行绑定的js语句

 <button @click="变量 = ?">

方法事件处理器

一个执行组件上定义的方法的属性名或是路径

事件修饰符

  1. .stop:阻止事件冒泡
  2. .prevent:阻止事件的默认行为
  3. .capture:使用事件捕获模式
  4. .self:只当事件是从侦听器绑定的元素本身触发时才触发回调
  5. .once:事件只触发一次
  6. .passive:告诉浏览器你不想阻止事件的默认行为
<template><div><button @click.stop="handleClick">阻止事件冒泡</button><a href="#" @click.prevent="handleClick">阻止默认行为</a><div @click.capture="handleClick">使用捕获模式</div><div @click.self="handleClick">只在元素本身触发时触发</div><button @click.once="handleClick">只触发一次</button><a href="#" @click.passive="handleClick">passive修饰符</a></div>
</template><script>
import { defineComponent } from 'vue';export default defineComponent({methods: {handleClick() {console.log('事件被触发了!');}}
});
</script>


http://www.ppmy.cn/server/20539.html

相关文章

SpringBoot + Vue实现Github第三方登录

前言&#xff1a;毕业设计终于好了&#xff0c;希望能有空多写几篇 1. 获取Github账号的Client ID和Client secrets 首先点击这个链接进入Github的OAuth Apps页面&#xff0c;页面展示如下&#xff1a; 之后我们可以创建一个新的apps: 填写资料&#xff1a; 创建之后就可以获…

如何进行域名解析?如何清理DNS缓存?(附源码)

目录 1、什么是域名&#xff1f; 2、为什么使用域名&#xff1f; 3、域名解析的完整流程 4、调用gethostbyname系统接口将域名解析成IP地址 5、为什么需要清理系统DNS缓存&#xff1f; 6、使用cmd命令清理DNS缓存 7、通过代码去清除系统DNS缓存 C软件异常排查从入门到精…

JAVA 中间件之 Mycat2

Mycat2应用与实战教程 1.Mycat2概述 1.1 什么是MyCat 官网&#xff1a; http://mycatone.top/ Mycat 是基于 java 语言编写的数据库中间件&#xff0c;是一个实现了 MySQL 协议的服务器&#xff0c;前端用户可以把它看作是一个数据库代理&#xff0c;用 MySQL 客户端工具和…

CentOS-7部署mysql、clickhouse并通过普罗米修斯、grafna监控告警

一、准备工作 1、系统环境 所用镜像&#xff1a;CentOS-7-x86_64-DVD-2009.iso 2、涉及安装包 3、克隆4台虚拟机 用途IP主机名Prometneus服务器192.168.15.129master被监控服务器1192.168.15.133node1mysql、clickhouse、grafana服务器192.168.15.134node2被监控服务器219…

设计模式学习笔记 - 项目实战一:设计实现一个支持各种算法的限流框架(设计)

概述 上篇文章&#xff0c;我们介绍了限流框架产生的项目背景&#xff0c;并对需求做了分析&#xff0c;这其中包括功能性需求和非功能性需求。 前面提到&#xff0c;我们把项目实现分为分析、设计、实现三部分来讲解。其中&#xff0c;分析环境跟之前讲过的面向对象分析很相…

情绪:本来无一物,何处惹尘埃

最近身边的朋友有提到最近因为各种事情&#xff0c;情绪不太稳定&#xff0c;心里开始出现不平稳的波动&#xff0c;情绪起伏有点大&#xff0c;在学习尝试调整。 我说&#xff0c;这其实非常好&#xff0c;因为你开始觉知了自己的波动&#xff0c;发现了自己的变化&#xff0c…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(Http板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器&#xff08;Http板块&#xff09; 一、思路图二、Util板块1、Splite板块&#xff08;分词&#xff09;&#xff08;1&#xff09;代码&#xff08;2&#xff09;测试及测试结果i、第一种测试ii、第二种…

代码随想录(番外)图论4

代码随想录&#xff08;番外&#xff09;图论4 417. 太平洋大西洋水流问题 那么我们可以 反过来想&#xff0c;从太平洋边上的节点 逆流而上&#xff0c;将遍历过的节点都标记上。 从大西洋的边上节点 逆流而长&#xff0c;将遍历过的节点也标记上。 然后两方都标记过的节点就…