vue 条件渲染v-if和v-show

yizhihongxing

Vue.js 条件渲染常用的有两个指令:v-if 和 v-show。

v-if

v-if 实际上是 Vue.js 提供的一种结构性指令,通过判断表达式的值的真假来控制元素是否渲染到 DOM 中。

<div id="app">
  <h2 v-if="isVisible">Hello, Vue.js!</h2>
  <button @click="isVisible = !isVisible">
    Toggle visibility
  </button>
</div>

在上面的例子中,当变量 isVisible 的值为 true 时,<h2> 元素会被渲染到页面中。而当点击“Toggle visibility”这个按钮时,会触发 isVisible 变量的取反操作,从而实现了控制元素显示与隐藏的功能。

v-show

v-show 指令和 v-if 类似也可以用于对元素是否渲染的控制,但是它是通过改变元素的 CSS 的 display 属性值来实现元素的显示和隐藏。

<div id="app">
  <h2 v-show="isVisible">Hello, Vue.js!</h2>
  <button @click="isVisible = !isVisible">
    Toggle visibility
  </button>
</div>

在上面的例子中,当变量 isVisible 的值为 true 时,<h2> 元素不会从文档中移除,而是使用 display: none 隐藏。而当点击“Toggle visibility”这个按钮时,会触发 isVisible 变量的取反操作,从而实现了控制元素显示与隐藏的功能。

区别

两者的主要区别是:v-if 是在每次渲染前检查表达式的值,如果为 false,则元素不会被渲染。而 v-show 则无论表达式的值是 true 还是 false,元素始终会被渲染,只是使用 CSS 的 display 属性来实现显示和隐藏。

在实际使用中,v-if 和 v-show 的选择由以下因素决定:

  • 如果需要频繁切换元素的显示和隐藏,使用 v-show 可以获得更好的性能。
  • 如果元素初始状态是隐藏的,可以使用 v-if 进行延迟渲染,减轻页面加载负担。
  • 如果不需要频繁切换元素的显示和隐藏,并且初始状态已知,两个指令的差异就不大了。

下面是一个模拟登录表单的例子:

<div id="app">
  <form v-show="!isLoggedIn">
    <input type="text" placeholder="Username">
    <input type="password" placeholder="Password">
    <button @click.prevent="login">Login</button>
  </form>
  <p v-else>Welcome, {{ username }}!</p>
</div>

在上面的例子中,使用 v-show 来控制登录表单的显示和隐藏。当 isLoggedIn 的值为 false 时,表单会显示;当 isLoggedIn 的值为 true 时,表单会隐藏,替而使用 <p> 元素显示欢迎信息。

完整代码演示如下:

<!DOCTYPE html>
<html>
<head>
  <title>Vue 条件渲染v-if和v-show</title>
  <meta charset="UTF-8">
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <h2 v-if="isVisible">Hello, Vue.js!</h2>
    <button @click="isVisible = !isVisible">
      Toggle visibility
    </button>
    <br>
    <h2 v-show="isVisible">Hello, Vue.js!</h2>
    <button @click="isVisible = !isVisible">
      Toggle visibility
    </button>
    <form v-show="!isLoggedIn">
      <input type="text" placeholder="Username" v-model="username">
      <input type="password" placeholder="Password" v-model="password">
      <button @click.prevent="login">Login</button>
    </form>
    <p v-else>Welcome, {{ username }}!</p>
  </div>

  <script>
    new Vue({
      el: '#app',
      data: {
        isVisible: true,
        isLoggedIn: false,
        username: '',
        password: ''
      },
      methods: {
        login() {
          if (this.username === 'admin' && this.password === '123456') {
            this.isLoggedIn = true;
          } else {
            alert('Invalid username or password!');
          }
        }
      }
    });
  </script>
</body>
</html>

在上面的例子中,在表单中填写正确的用户名和密码,点击“Login”按钮后,可以看到表单被隐藏,替而使用 <p> 元素显示欢迎信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 条件渲染v-if和v-show - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue 实现从文件中获取文本信息的方法详解

    Vue 实现从文件中获取文本信息的方法详解 在Vue开发过程中,我们有时需要从文件中读取文本信息,并在Vue组件中展示或者做其他操作。本文将为您介绍一些Vue实现从文件中获取文本信息的方法,以供您参考和使用。 方法一:使用Ajax请求 可以使用jQuery或者Vue自带的axios库执行Ajax请求来从文件中获取文本信息。以下是一个使用Vue的axios库进…

    Vue 2023年5月28日
    00
  • vue中 v-for循环的用法详解

    Vue中v-for循环的用法详解 在Vue中,v-for是一种指令,用于循环渲染数据列表。本篇攻略将详细讲解Vue中v-for的用法。 基本用法 v-for指令需要用在具有多个子节点的元素上,它的语法格式为: <div v-for="(item, index) in items" :key="index">…

    Vue 2023年5月27日
    00
  • Vue element el-table-column中对日期进行格式化方式(全局过滤器)

    针对Vue element el-table-column中对日期进行格式化方式,可以通过全局过滤器来实现,以下是具体步骤。 步骤一:创建全局过滤器 在Vue项目的main.js文件中,定义一个全局过滤器来格式化日期,代码如下: import Vue from ‘vue’; import moment from ‘moment’; Vue.filter(‘f…

    Vue 2023年5月29日
    00
  • 前端实时通信的8种方式及其优缺点和实现方式

    前端实时通信的8种方式及其优缺点和实现方式 前端实时通信是目前前端开发中常见的需求之一,常用于在线聊天、游戏、协作、数据实时更新等场景中,下面将对前端实时通信的8种方式进行详细讲解。 方式一:Ajax轮询 优点 兼容性好,支持大部分浏览器。 能够实时获取后端数据。 缺点 客户端会不断向服务器发送请求,增大服务器压力。 不是真正意义上的实时通信。 实现方式 f…

    Vue 2023年5月28日
    00
  • vue封装echarts组件,数据动态渲染方式

    下面就是关于”Vue封装Echarts组件,数据动态渲染方式”的攻略: 1. 为什么要封装Echarts组件? 一般来说,如果要使用Echarts来进行数据可视化,我们需要在Vue中通过引入Echarts库,然后在Vue的mounted钩子函数中进行初始化,同时在Echarts的配置对象中动态设置数据。这样做的话,代码量较大且不够清晰明了。 因此,我们可以根…

    Vue 2023年5月27日
    00
  • vue之将echart封装为组件

    封装echarts为Vue组件并不难,只需要遵循以下步骤即可。 步骤1:安装echarts和vue-echarts 使用npm安装echarts和vue-echarts依赖: npm install echarts vue-echarts –save 步骤2:创建一个Echarts.vue组件 在src/components目录下创建一个Echarts.v…

    Vue 2023年5月28日
    00
  • vue3.0翻牌数字组件使用方法详解

    题目中提到的“vue3.0翻牌数字组件使用方法详解”指的是一个基于Vue3实现的数字翻牌组件。该组件可以在网页中展示数字,当数字变化时,会以数字翻牌的方式呈现,非常炫酷。下面将详细讲解该组件的使用方法。 安装 首先,我们需要在项目中安装该组件。打开终端,输入以下命令: npm install vue3-flip-number –save 引入组件 安装完成…

    Vue 2023年5月28日
    00
  • vue日历组件的封装方法

    下面我会详细讲解“Vue日历组件的封装方法”的完整攻略。 1. 选择正确的依赖项 在Vue项目中,我们可以使用已有的第三方插件来创建日历组件,这些插件通常提供了日历的样式和功能。下面是几个值得推荐的Vue日历组件:- vue-fullcalendar- v-calendar- vue-simple-calendar 对于仅仅需要显示日历的场景,这些插件已经足…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部