后端前行Vue之路(四):条件渲染v-if和v-show

1.概述

随着前端开发的不断发展,动态渲染页面成为了常见的需求。Vue.js 作为一款流行的前端框架,提供了多种方式来实现条件渲染,所谓条件渲染就是一种根据数据的值来动态决定是否渲染特定的元素或组件的方式。Vue 实现条件渲染的指令包括 v-ifv-else-ifv-elsev-show 等指令。本文将介绍这些指令的使用方法和适用场景,并给出一些最佳实践建议。

2.v-if

v-if 指令用于根据表达式的值来决定是否渲染特定的元素或组件。它会根据表达式的真假动态地销毁或创建元素。例如:

xml 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <h2 v-if="isReal">isReal为true, {{msg}}</h2>
      <h2 v-if="!isReal">isReal为false, {{msg}}<h2>
      <h2 v-if="n===1">n等于1, {{msg}}</h2>
    </div>
  </body>
​
  <script type="text/javascript">
    Vue.config.productionTip = false
​
    const vm = new Vue({
      el:'#root',
      data:{
        isReal:true,
        n:1,
        msg:"我显示出来了"
      }
    })
  </script>
</html>

3. v-else-if和v-else

v-else-if 指令用于在 v-if 指令的后面添加一个额外的条件,如果之前的条件不满足,则检查这个条件;如果满足,则渲染该元素或组件。v-else 指令用于在 v-ifv-else-if 的后面添加一个默认条件,如果之前的条件都不满足,则渲染该元素或组件。

ini 复制代码
      <h2 v-if="n===1">n等于1, {{msg}}</h2>
      <h2 v-else-if="n===2">n等于2, {{msg}}</h2>
      <h2 v-else="n===3">n等于, {{msg}}</h2>

4.v-show

v-show 指令与 v-if 类似,用于根据表达式的值来决定是否渲染元素或组件。不同的是,v-show 只是简单地切换元素的 CSS display 属性,而不是真正地销毁和重新创建元素。

xml 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <h2 v-if="isReal">isReal为true, {{msg}}</h2>
      <h2 v-if="!isReal">isReal为false<>
      <h2 v-if="n===1">n等于1, {{msg}}</h2>
      <h2 v-else-if="n===2">n等于2, {{msg}}</h2>
      <h2 v-else="n===3">n等于, {{msg}}</h2>
      <h2 v-show="isShow">isShow为true,{{msg}}</h2>
    </div>
  </body>
​
  <script type="text/javascript">
    Vue.config.productionTip = false
​
    const vm = new Vue({
      el:'#root',
      data:{
        isReal:true,
        isShow:false,
        n:2,
        msg:"我显示出来了"
      }
    })
  </script>
</html>

在谷歌浏览器打开该html文件,开启开发者工具查看你会发现:

可以得出如下结论:

  • 当需要在不同条件下选择性地渲染元素或组件时,可以使用 v-ifv-else-ifv-else
  • 当需要频繁地切换元素的显示和隐藏时,可以使用 v-show,因为它只是切换 CSS 属性,性能比较高;
  • 如果条件不太频繁变化,可以使用 v-if,因为它会根据条件的真假销毁或创建元素,减少页面的渲染压力

5. 在

相关推荐
未来之窗软件服务21 小时前
幽冥大陆(三十五)S18酒店门锁SDK go语言——东方仙盟筑基期
java·前端·golang·智能门锁·仙盟创梦ide·东方仙盟·东方仙盟sdk
卸任21 小时前
解密Flex布局:为什么flex:1仍会导致内容溢出
前端·css·flexbox
前端一课21 小时前
第 28 题:async / await 的原理是什么?为什么说它是 Promise 的语法糖?(详细版)
前端·面试
前端一课21 小时前
第 28 题:手写 async/await(Generator 自动执行器原理)
前端·面试
前端一课21 小时前
第 33 题:浏览器渲染流程(Reflow 重排、Repaint 重绘、Composite 合成)*
前端·面试
前端一课21 小时前
前端面试第 34 题:事件循环(Event Loop)—— 必考高频题
前端·面试
前端一课21 小时前
第 26 题:Vue2 和 Vue3 的响应式原理有什么区别?为什么 Vue3 要用 Proxy 替代 defineProperty?
前端·面试
前端一课21 小时前
第 30 题:模块化原理(CommonJS vs ESModule)
前端·面试
前端一课21 小时前
第 31 题:Tree Shaking 原理与常见失效原因(高频 + 难点 + 面试必考)
前端·面试
前端一课21 小时前
第 27 题:Promise 实现原理(含手写 Promise)
前端·面试