Vue v-if v-else详解

一、v-if 和 v-else的基本使用

Vue中的v-if和v-else是用于条件性渲染的指令,只有当指定条件为 true 时才会渲染对应的DOM元素。下面的代码演示了v-if和v-else的基本用法:

<template>
  <div v-if="isShow">
    <h3>这是v-if渲染出来的内容</h3>
  </div>
  <div v-else>
    <h3>这是v-else渲染出来的内容</h3>
  </div>
</template>


export default {
  data() {
    return {
      isShow: false,
    };
  },
};
</script>

上面的代码中,通过isShow的值来判断是渲染v-if还是v-else指定的内容。当isShow为true时,渲染v-if指定的内容;当isShow为false时,渲染v-else指定的内容。需要注意的是:v-else必须紧跟在v-if后面,否则会报错。

二、v-if和v-show的区别

虽然v-if和v-show都是用于条件性渲染的指令,但是它们之间存在一些区别。下面是它们之间的区别:

1. 编译时机

v-if 是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。v-if是惰性的,如果初始条件为false,则什么也不做,只有在条件为true时才会进行初次编译。

而v-show则是“懒惰”的,不管初始条件是什么,它都会在初始渲染时被编译。并且,每次略微开销大一点,因为它需要在切换时切换 CSS 样式。一般来说,v-if更适合在运行时很少改变条件,不需要频繁切换的场景;v-show则更适合需要非常频繁切换的场景。

2. 性能消耗

v-if是惰性的,如果初始条件为false,则什么也不做,只有在条件为true时才会初次编译和挂载,这样可以节约一些初次渲染的性能;

v-show则是一直在页面上,只是在CSS中进行隐藏,所以在切换过程中不需要像v-if那样创建和销毁元素,所以虽然v-show在初始渲染时会和$v-if有一点性能损失,但是在频繁切换时,v-show的性能更高。

三、v-if和v-for的使用

v-if和v-for是经常一起使用的。下面是一个示例代码,用来说明如何在v-for循环内部使用v-if:

<template>
  <ul>
    <li v-for="(item, index) in list" :key="index">
      <div v-if="item.checked">{{ item.name }}</div>
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { name: 'Vue', checked: true },
        { name: 'React', checked: true },
        { name: 'Angular', checked: false },
      ],
    };
  },
};
</script>

在上面的代码中,使用了v-for遍历list数组,然后使用v-if判断item.checked的值,如果为true,则渲染出item.name。

四、使用v-if和v-else-if和v-else进行多重判断

有时候,我们需要根据不同的条件渲染不同的内容,这时候就需要使用v-else-if指令了。

<template>
  <div>
    <div v-if="type === 'A'">A类型的内容</div>
    <div v-else-if="type === 'B'">B类型的内容</div>
    <div v-else>其他类型的内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      type: 'A',
    };
  },
};
</script>

在上面的代码中,使用了v-if, v-else-if和v-else指令对type的值进行了多重判断。当type的值为’A’时,渲染”A类型的内容”;当type的值为’B’时,渲染”B类型的内容”;当type的值为其他内容时,渲染”其他类型的内容”。

五、v-if和v-show的语法糖

在Vue 2.5.0及以上版本中,还提供了一种新写法来使用v-if和v-show指令,称为“语法糖”。

1. v-if语法糖:

<template>
  <div v-if="name">Hello {{ name }}!</div>
</template>

可以使用下面这种写法来代替上面的代码:

<template>
  <div v-if="name">{{`Hello ${name}!`}}</div>
</template>

使用${}来代替 {{ }},并且使用“来代替””。

2. v-show语法糖:

<template>
  <div v-show="isShow">Hello world!</div>
</template>

可以使用下面这种写法来代替上面的代码:

<template>
  <div :style="{ display: isShow ? 'block' : 'none' }">Hello world!</div>
</template>

使用:style来设置元素样式,当isShow为true时,设置display属性为block;当isShow为false时,设置display属性为none。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/280527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-21 13:05
下一篇 2024-12-21 13:05

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • Python while嵌套if

    本文将从多个方面对Python while里面嵌套if做详细的阐述,帮助你更好地理解如何在Python中使用while嵌套if语句。 一、while循环和if语句的基本概念 在开始…

    编程 2025-04-27
  • Python循环输出1到100的偶数if语句

    本文将从多个角度阐述Python循环输出1到100的偶数if语句的方法和技巧。 一、循环输出1到100的偶数if语句的代码实现 for i in range(1, 101): if…

    编程 2025-04-27
  • 分析if prefixoverrides="and |or"的用法与实例

    if语句是编程语言中最为基础和常见的控制流语句,而prefixoverrides是if语句的一个重要属性。其中,prefixoverrides的常见取值为and和or。那么,这两者…

    编程 2025-04-27
  • 如何使用Python编写if语句

    Python是一种广泛使用的高级编程语言,由于其语法简洁、易于学习和强大的功能,已经成为了开发人员的首选之一。if语句是Python编程语言中最基本的流程控制语句之一,用于判断给定…

    编程 2025-04-27

发表回复

登录后才能评论