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

vue3学习笔记之条件渲染

条件渲染

v-if 指令

v-if 指令用于根据表达式的真假来决定是否渲染元素或组件。如果表达式的值为 true,则元素或组件会被渲染到 DOM 中;如果为 false,则元素或组件不会被渲染,甚至不会在 DOM 中存在。

基本用法
<template><div><h1 v-if="isShow">This is a heading</h1></div>
</template><script setup>
import { ref } from 'vue';const isShow = ref(true);
</script>

在上述例子中,只有当 isShow 的值为 true 时,<h1> 元素才会被渲染到页面上。

多个元素的条件渲染

你可以使用 <template> 标签来包裹多个元素,并在其上使用 v-if 指令。这样可以根据条件一次性渲染或不渲染多个元素。

<template><div><template v-if="isShow"><h1>Heading 1</h1><p>Paragraph 1</p></template></div>
</template><script setup>
import { ref } from 'vue';const isShow = ref(true);
</script>
v-else 和 v-else-if

v-else 和 v-else-if 指令可以与 v-if 一起使用,用于创建多个条件分支。

<template><div><h1 v-if="condition === 1">Condition 1</h1><h1 v-else-if="condition === 2">Condition 2</h1><h1 v-else>Other Condition</h1></div>
</template><script setup>
import { ref } from 'vue';const condition = ref(2);
</script>

v-show 指令

v-show 指令也用于根据条件显示或隐藏元素,但它与 v-if 不同的是,无论条件真假,元素始终会被渲染到 DOM 中,只是通过 CSS 的 display 属性来控制其显示或隐藏。

基本用法
<template><div><h1 v-show="isShow">This is a heading</h1></div>
</template><script setup>
import { ref } from 'vue';const isShow = ref(true);
</script>

在上述例子中,无论 isShow 的值是 true 还是 false<h1> 元素都会存在于 DOM 中,只是当 isShow 为 false 时,它的 display 属性会被设置为 none,从而在页面上隐藏。

v-if 和 v-show 的区别

  • 渲染方式
    • v-if 是根据条件的真假来决定是否渲染元素,条件为 false 时,元素不会出现在 DOM 中。
    • v-show 则是始终渲染元素,只是通过 CSS 控制其显示或隐藏。
  • 性能
    • v-if 有更高的切换开销,因为它需要在 DOM 中添加或移除元素。
    • v-show 有更高的初始渲染开销,因为它不管条件如何都会渲染元素。
  • 使用场景
    • 当条件在运行时很少改变时,使用 v-if 更合适。
    • 当条件频繁切换时,使用 v-show 更合适。

相关文章:

  • 关于EXPLAIN ANALYZE 工具的解析及使用方法(AI)
  • centos7更换yum源不生效
  • KingbaseV8
  • easyExcel单元格合并
  • 【TVM教程】microTVM TFLite 指南
  • C++11中的std::condition_variable
  • CCS编译器无法导入工程文件,检查原因是版本编译器编译问题
  • 自适应布局,平均分配,自动换行,上下对齐
  • 大模型相关面试问题原理及举例
  • java+postgresql+swagger-多表关联insert操作(九)
  • 【Scratch编程入门】字母动画制作
  • NHANES指标推荐:CMI
  • LLaMA Factory多模态微调实践:微调Qwen2-VL构建文旅大模型
  • 《奇迹世界起源》:神之月晓活动介绍!
  • YRAN定义
  • Enovia许可证管理与监控工具
  • 对WAV文件进行降噪
  • 51、项⽬中的权限管理怎么实现的
  • k8s介绍与实践
  • 【AI提示词】儿童看护员
  • 两大跨国巨头称霸GLP-1市场,国产减肥药的机会在哪?
  • 上海浦东:顶尖青年人才最高可获700万元资助及1亿元项目补贴
  • 天文学家、民盟江苏省委会原常务副主委任江平逝世
  • 黄仁勋今年二度到访:中国是英伟达非常重要的市场,希望继续与中国合作
  • 十四届全国政协教科卫体委员会副主任杨小伟被查
  • 杭州银行副行长:净息差总体仍有下行压力,但下行边际明显好转