Vue框架学习笔记——条件渲染:v-show和v-if

文章目录

  • 前文提要
  • 条件渲染
  • v-show
  • v-if
    • v-else-if和v-else
      • 特殊写法,很多个一致的v-if如何消除
  • 总结


前文提要

本人仅做个人学习记录,如有错误,请多包涵

主要学习链接:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通


条件渲染

条件渲染顾名思义是符合条件了才给你渲染出来,才显示出来。
可以使用两种指令完成这个操作:v-show和v-if指令。

其中v-show指令隐藏不显示的元素,结构仍然在,也就是你浏览器页面中虽然看不见,但是你打开控制台查看源代码的时候,仍然能够看见它,这是通过修改底层的display属性实现的。

但是v-if则不一样,它是直接删除整个结构的,你网页中看不见,源代码中同样不出现,所以比较耗费资源,如果变化比较频繁的时候,也不建议使用v-if。

只要保证v-show和v-if后面的表达式布尔值为真,就会显示,假就不显示。

v-show

如果将代码写成这样:

<body>
  <div id="box">
    <h1 v-show="a===false">显示a</h1>
    <button @click="a=!a">改变a的数值,a现在={{a}}</button>
  </div>
  <script type="text/javascript">
    Vue.config.productionTip = false
    const vm = new Vue({
      el: '#box',
      data: {
        a:false
      },
    })
  </script>
</body>

那么你就已经可以通过v-show掌握元素的显示和隐藏了,通过将元素隐藏或是显示的控制权移交给Vue框架。

当然,你也可以通过写一些函数,来返回布尔值,v-show后面的只要是布尔值就行,true显示,false隐藏。

呈现效果:
显示:

在这里插入图片描述
隐藏:

在这里插入图片描述
v-show实现的时候,元素隐藏,该元素的结构仍然存在

v-if

如果将上文代码中的这一部分修改(其余部分不变):

<h1 v-if="a===false">显示a</h1>

呈现效果就会大不相同:
显示:
在这里插入图片描述
隐藏:
在这里插入图片描述
当v-if后面的布尔值为假的时候,整个结构都会被删除,会用一个注释来代替。

v-else-if和v-else

将上文代码改为这样:

<body>
  <div id="box">
    <h1 v-if="a===1">显示1</h1>
    <h1 v-else-if="a===2">显示2</h1>
    <h1 v-else-if="a===3">显示3</h1>
    <h1 v-else>显示hh</h1>
    <button @click="a++">a+=1,a现在={{a}}</button>
  </div>
  <script type="text/javascript">
    Vue.config.productionTip = false
    const vm = new Vue({
      el: '#box',
      data: {
        a:1
      },
    })
  </script>
</body>

当v-if后面的条件为真的时候,就不会接着判断后续v-else-if和v-else的条件了。你如果都写成一堆的v-if,那么它会接着判断。
当a>=4的时候,永远都只会显示’显示hh’,这和其他编程语言中的逻辑是一样的。
需要注意的是,v-if和v-else-if只要,v-if和v-else-if,v-if和v-else-if还有v-else,这些组合如果出现了,那么标签的中间就不能出现其他不包含其他的标签,要始终保持他们是一个紧密的整体

错误示范,写成这样就不可以:

<h1 v-if="a===1">显示1</h1>
    <h1 v-else-if="a===2">显示2</h1>
    <h1 v-else-if="a===3">显示3</h1>
    <h1>333</h1>
    <h1 v-else>显示hh</h1>

在这里插入图片描述

特殊写法,很多个一致的v-if如何消除

    <h1 v-if="a===1">显示1</h1>
    <h1 v-if="a===1">显示2</h1>
    <h1 v-if="a===1">显示3</h1>

例如写成这样子,连续三行的判断条件都是同一个,可以使用div标签包裹,就像这样,但是很不推荐这种写法,因为会破坏DOM结构

  <div id="box">
    <div v-if="a===1">
      <h1>显示1</h1>
      <h1>显示2</h1>
      <h1>显示3</h1>
    </div>

但是有一种特殊的类似写法,不会破坏DOM结构,那就是使用template,就像这样:

    <template v-if="a===1">
      <h1>显示1</h1>
      <h1>显示2</h1>
      <h1>显示3</h1>
    </template>

template在解析完成后会自动消失,不像div标签一样会存在与html文件中破坏DOM结构,使得原先可以定位的代码失效。

总结

在这里插入图片描述


至此,结束。

如果你觉得这篇文章写的不错,多多点赞~收藏吧!

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

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

相关文章

Vatee万腾的数字探险之旅:vatee科技创新的新纪元

在数字时代的潮流中&#xff0c;Vatee万腾以其独特的数字探险之旅引领着科技创新的新纪元。这不仅是一次技术的进步&#xff0c;更是一场数字领域的探险&#xff0c;让我们一同探索Vatee在科技创新中的前沿地带。 Vatee万腾的数字探险起源于对未知的渴望和对创新的不懈追求。在…

使用Terraform创建Docker镜像和容器

为了实现自动化操作&#xff0c;Terraform需要明确指定所使用的提供者。因此&#xff0c;在主要的main.tf文件中&#xff0c;需要提供提供者的名称、源和版本信息。对于Docker&#xff0c;可以在main.tf中使用以下代码块。 1 Terraform配置模块 使用块和资源创建Terraform脚本…

JMeter之压力测试——混合场景并发

在实际的压力测试场景中&#xff0c;有时会遇到多个场景混合并发的情况&#xff0c;这时就需要设置不同的并发比例对不同场景请求数量的控制&#xff0c;下面提供两种方案。 一、多线程组方案 1.业务场景设计如下&#xff1a;场景A、场景B、场景C&#xff0c;三个场景按照并发…

MySQL 前瞻

数据库 是一类软件&#xff0c;这一类软件可以用来“管理数据”&#xff08;对数据进行保存&#xff0c;增删改查 [与数据结构的有什么区别呢&#xff1f;]&#xff09; 数据结构是实现增删改查的具体方式 数据库则是管理数据的软件&#xff0c;实现数据库软件内部就用到了很…

java多线程-扩展知识一:进程线程、并发并行、同步异步

1、进程 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配的基本单位&#xff0c;是操作系统结构的基础。在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体&#xff1b;在当代面向线程…

【RLChina2023】CCF 苏州 记录

目录 RLChina介绍主旨报告专题报告智能体学习理论(专题一)智能体决策与规划(专题二)智能体框架、体系结构与训练系统(专题六)基于大语言模型的具身智能体与机器人研究 (专题八)教学报告——强化学习入门特别论坛——智能体和多智能体艺术的探索会议照片RLChina介绍 RLC…

微服务--02--Nacos注册中心

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 服务注册和发现手动发送Http请求的方式存在问题注册中心原理 Nacos注册中心配置服务注册服务发现小结&#xff1a; 服务注册和发现 手动发送Http请求的方式存在问题…

京东平台双11全品类完整销售数据回顾(京东大数据-京东数据采集-京东数据接口)

今年的双十一&#xff0c;大家依然没有等到各大平台的官方战报。 所以&#xff0c;对于绝大部分品牌、商家、咨询公司乃至有数据研究需求的小伙伴来说&#xff0c;很难了解到今年大促消费者的真实消费水平。 为此&#xff0c;鲸参谋简单整理出了10个京东大类目&#xff08;含5…

内测分发平台是否支持应用的微服务化部署

内测分发平台的微服务化部署支持是现代应用开发和部署的一个重要特性。首先我们得知道什么是微服务化部署都有哪些关键功能&#xff0c;如何实施微服务化的部署。下文以我自己理解总结了几点。 图片来源:news.gulufenfa.com 微服务是一种基于独立运行的小型服务来构建应用程序…

Java LinkedHashMap

LinkedHashMap 继承于 HashMap。在 HashMap 基础上, 维护了一条双向链表, 用来记录存入 Map 中的数据的顺序, 即存储到 Map 中的 key-value 是有序的。 解决了 HashMap 无法顺序访问的和保持插入顺序的问题。 1 LinkedHashMap 的结构定义 LinkedHashMap 是基于 HashMap 的实现…

Linux虚拟化的模式

三种虚拟化方式&#xff1a;完全虚拟化&#xff08;Full virtualization&#xff09;、硬件辅助虚拟化&#xff08;Hardware-Assisted Virtualization&#xff09;、半虚拟化&#xff08;Paravirtualization&#xff09;。 服务器上的虚拟化软件&#xff0c;多使用 qemu&#…

SpringCloudAlibaba之sentinel 流量卫兵(流控,熔断降级) ——详细讲解

目录 一、什么是sentinel 二、sentinel使用 1. sentinel dashboard的安装 2.启动 3.访问web界面 ​编辑 4.登录 三、sentinel 实时监控服务 1.创建项目引入依赖 2.配置 3.启动服务 4.访问dashboard界面查看服务监控 5.开发服务 6.启动进行调用 7.查看监控界面 四、senti…

基于helm的方式在k8s集群中部署gitlab - 部署(一)

文章目录 1. 背景说明2. 你可以学到什么&#xff1f;3. 前置条件4. 安装docker服务&#xff08;所有节点&#xff09;5. 部署k8s集群5.1 系统配置&#xff08;所有节点&#xff09;5.2 安装kubelet组件(所有节点)5.2.1 编写kubelet源5.2.2 安装kubelet5.2.3 启动kubelet 5.3 集…

百度智能小程序系统源码+关键词排名优化 附带完整的搭建教程

百度智能小程序系统的开发背景是基于百度强大的技术实力和对用户需求的深入理解。在移动互联网时代&#xff0c;用户对便捷、高效、智能的服务需求越来越高。而小程序作为一种轻量级的应用程序&#xff0c;恰好能够满足用户的这些需求。然而&#xff0c;开发一个小程序需要掌握…

011 OpenCV warpAffine

目录 一、环境 二、warpAffine原理 三、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、warpAffine原理 warpAffine是OpenCV库中的一个函数&#xff0c;它用于执行二维仿射变换。这个函数接受一个输入图像和变换矩阵&…

波奇学C++:C++11的新特性

列表初始化 #include<iostream> using namespace std; struct A {int _x;int _y; }; int main() {// 三种方式等价&#xff0c;并且可以省略int x 1;int y { 2 };int z{ 3 };return 0; } {}按声明顺序初始化类成员变量 A p{ 1,2 }; cout << p._x; //1 cout &…

零基础可以学编程吗,不懂英语怎么学编程,中文编程工具实例

零基础可以学编程吗&#xff0c;不懂英语怎么学编程&#xff0c;中文编程工具实例 上图是中文编程工具界面、标尺实例。 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#x…

数据结构——堆的实现(详解)

呀哈喽&#xff0c;我是结衣。 堆的介绍 如果有一个关键码的集合K {k0,k1,k2,…,kn-1},把它的所有元素按照完全二叉树的顺序储存方式储存在一个一维数组中&#xff0c;并满足&#xff1a;Ki<K2i1且ki<K2i2(Ki>K2i1且Ki>-K2i2)i 1,2,3…,则称为小堆&#xff08;或…

软著项目推荐 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

【我的创作纪念日】

机缘 大家好&#xff0c;我是圥忈ゼ&#xff0c; 2023 年 07 月 20 日&#xff0c;我撰写了第 1 篇技术博客&#xff1a;《我的编程未来规划》&#xff0c;也是由于我高考后的专业选择&#xff0c;和就业方向的选择&#xff0c;加上想立志成为一名专业 IT 作者&#xff0c;我结…