当前位置: 首页 > news >正文

在Vue开发中v-if指令和v-show指令的使用介绍和区别及使用场景

一、条件渲染
v-if

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。

<h1 v-if="awesome">Vue is awesome!</h1>
v-else

你也可以使用 v-else 为 v-if 添加一个“else 区块”。

<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no</h1>
v-else-if

v-else-if 提供的是相应于 v-if 的“else if 区块”。它可以连续多次重复使用:

<div v-if="type === 'A'">A</div>
<div v-else-if="type === 'B'">B</div>
<div v-else-if="type === 'C'">C</div>
<div v-else>Not A/B/C</div>

和 v-else 类似,一个使用 v-else-if 的元素必须紧跟在一个 v-if 或一个 v-else-if 元素后面。

<template> 上的 v-if

因为 v-if 是一个指令,他必须依附于某个元素。但如果我们想要切换不止一个元素呢?在这种情况下我们可以在一个 元素上使用 v-if,这只是一个不可见的包装器元素,最后渲染的结果并不会包含这个 元素。

<template v-if="ok"><h1>Title</h1><p>Paragraph 1</p><p>Paragraph 2</p>
</template>

v-else 和 v-else-if 也可以在 上使用。

v-show

用来按条件显示一个元素的指令是 v-show。其用法基本一样:

<h1 v-show="ok">Hello!</h1>

不同之处在于 v-show 会在 DOM 渲染中保留该元素;v-show 仅切换了该元素上名为 display 的 CSS 属性。

v-show 不支持在 元素上使用,也不能和 v-else 搭配使用。

二、区别:
渲染区别
  • v-show 是通过控制display属性来进行dom的显示与隐藏
  • v-if 是真正意义上的条件渲染,为true是渲染(dom存在),为false时不存在(dom不存在)
性能区别:
  • v-if有更高的切换开销,v-show有更高的初始渲染开销。
    如果需要频繁的切换,使用v-show比较好,如果运行条件很少改变,使用v-if比较好。
  • v-show比v-if性能更高,因为v-show只能动态的改变样式,不需要增删DOM元素。
    所以当程序不是很大时候,v-if和v-show区别都不大,如果项目很大,推荐多用v-show,较少浏览器后期操作的性能。
  • 需要多种条件场景,比如id=1,=2,=3…时候,因为只有v-if,可以和v-else等连用,这种比较适合用v-if
  • v-show不支持语法
  • v-if切换的时候会实时的销毁和重建内部的事件、钩子函数等,v-show只会初始化渲染时候执行,再切换时候不会执行生命后期的过程。
三、注意事项

永远不要把 v-if 和 v-for 同时用在同一个元素上,带来性能方面的浪费(每次渲染都会先循环再进行条件判断)

http://www.lryc.cn/news/257454.html

相关文章:

  • Power Query是啥
  • 在k8s中部署nfs-client-provisioner
  • 23.12.10日总结
  • 持续集成交付CICD:通过API方式上传Nexus制品
  • Hadoop学习笔记(HDP)-Part.14 安装YARN+MR
  • reinforce 跑 CartPole-v1
  • 【VRTK】【VR开发】【Unity】13-攀爬
  • 华为OD机试真题-求幸存数之和-2023年OD统一考试(C卷)
  • python pyaudio实时读取音频数据并展示波形图
  • 【算法系列篇】递归、搜索和回溯(二)
  • Ubuntu下安装SDL
  • 创建vue项目:vue脚手架安装、vue-cli安装,vue ui界面创建vue工程(vue2/vue3),安装vue、搭建vue项目开发环境(保姆级教程二)
  • 【3】密评-物理和环境安全测评
  • 笨爸爸工房,我们在校园|“小鲁班”,铸未来
  • RPC 集群,gRPC 广播和组播
  • OpenSSL SSL_read: Connection was reset, errno 10054
  • 【springboot】整合redis和定制化
  • HarmonyOS鸿蒙操作系统架构开发
  • 共创共赢|美创科技获江苏移动2023DICT生态合作“产品共创奖”
  • 深度学习——第3章 Python程序设计语言(3.5 Python类和对象)
  • 【原创】【一类问题的通法】【真题+李6卷6+李4卷4(+李6卷5)分析】合同矩阵A B有PTAP=B,求可逆阵P的策略
  • 代码随想录算法训练营第六十天 | 84.柱状图中最大的矩形
  • C#结合JavaScript实现多文件上传
  • STM32——继电器
  • 性能监控体系:InfluxDB Grafana Prometheus
  • CS106L2023 and CS106B 环境配置(详细教程)
  • Docker-多容器应用
  • Golang导入导出Excel表格
  • 基于Maven的Spring Boot应用版本号获取解析
  • LLM微调(二)| 微调LLAMA-2和其他开源LLM的两种简单方法