vue v-if 多条件_vue if show

vue v-if 多条件_vue if showv-if在模板中,可以根据条件进行渲染。条件用到的是v-if、v-else-if以及v-else来组合实现的。示例代码如下:<divid="app"><p

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

v-if

在模板中,可以根据条件进行渲染。条件用到的是v-if、v-else-if以及v-else来组合实现的。示例代码如下:

<div id="app">
    <p v-if="weather == 'sun'">今天去公园玩!</p>
    <p v-else-if="weather == 'rain'">今天去看电影!</p>
    <p v-else>今天哪儿也不去!</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            weather: 'sun'
        }
    });
</script>

 

在<template>上使用v-if

有时候我们想要在一个条件中加载多个html元素,那么我们可以通过template元素上实现。示例代码如下:

<div id="app">
    <template v-if="age<18">
        <p>数学多少分?</p>
        <p>英语多少分?</p>
    </template>
    <template v-else-if="age>=18 && age<25">
        <p>结婚了吗?</p>
        <p>考研究生了吗?</p>
    </template>
    <template v-else>
        <p>加薪了吗?</p>
        <p>工资多少?</p>
    </template>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            age: 24
        }
    });
</script>

 

用 key 管理可复用的元素

另外,在模板中,Vue会尽量重用已有的元素,而不是重新渲染,这样可以变得更加高效。如果你允许用户在不同的登录方式之间切换:

<div id="app">
  <template v-if="loginType === 'username'">
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username" placeholder="用户名">
  </template>
  <template v-else>
    <label for="email">Email</label>
    <input type="text" id="email" name="email" placeholder="邮箱">
  </template>
  <div>
    <button @click="changeLoginType">切换登录类型</button>
  </div>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      loginType: "username"
    },
    methods: {
      changeLoginType(){
        // 如果类型为username,则切换成email,否则反之
        this.loginType = this.loginType==="username"?"email":"username";
      }
    }
  })
</script>

接下来我们查看下效果图
vue v-if 多条件_vue if show
这个里面会有一个问题,就是如果我在username的输入框中输入完信息,切换到邮箱中,之前的信息还是保留下来,这样肯定不符合需求的,如果我们想要让html元素每次切换的时候都重新渲染一遍,可以在需要重新渲染的元素上加上唯一的key属性,其中key属性推荐使用整形,字符串类型。示例代码如下

<div id="app">
  <template v-if="loginType === 'username'">
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username" placeholder="用户名" key="username">
  </template>
  <template v-else>
    <label for="email">Email</label>
    <input type="text" id="email" name="email" placeholder="邮箱" key="email">
  </template>
  <div>
    <button @click="changeLoginType">切换登录类型</button>
  </div>
</div>

我们可以看到用户名原来输入的123切换到邮箱方式时,输入框中的123不见了
注意,<label>元素仍然会被高效地复用,因为它们没有添加key属性。
 

v-show

另一个用于根据条件展示元素的选项是 v-show 指令。用法大致一样:

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

不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS property display。

注意,v-show 不支持 <template> 元素,也不支持 v-else。
 

v-if 对比 v-show

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165400.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mysql中的关联查询(内连接,外连接,自连接)

    Mysql中的关联查询(内连接,外连接,自连接)在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询一,内连接查询是指所有查询出的结果都是能够在连接的表中有对应记录的。以t_employee(员工表)和t_dept(部门表)为例:t_employee表中的记录如下:dept代表该员工所在的部门t_dept表中记录

    2022年5月24日
  • ASMM与AMM「建议收藏」

    ASMM与AMM「建议收藏」ASMM(AutomaticSharedMemoryManagement,自动共享内存管理)是Oracle10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(MemoryManagerProcess,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASMM的…

    2022年5月2日
  • 树莓派基于QT实现利用USB转485模块进行串口通讯「建议收藏」

    树莓派基于QT实现利用USB转485模块进行串口通讯「建议收藏」本文的QT版本为5.3.2,是树莓派可直接下载安装的QT版本,不用自己编译。树莓派为3B+。树莓派利用自带的硬件串口是3.3V的ttl电平,在做测试的时候会遇到很多485的设备,在使用232转485的模块遇到了一些乱码问题,所以准备直接利用USB转485模块插在树莓派的USB口上进行通讯。不过这个版本的QT没有Qserialport模块,需要安装,通过命令安装sudoapt-getinstal…

    2022年5月3日
  • 什么叫构造方法?_构造方法和普通方法之间的区别

    什么叫构造方法?_构造方法和普通方法之间的区别构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重

    2022年8月4日
  • 详解linux中rsync的妙用[通俗易懂]

    详解linux中rsync的妙用[通俗易懂]????1.rsync备份服务器软件介绍:Rsync是一款开源的、快速的、多功能的、可实现全量及增长的本地或远程数据同步备份的优秀工具。增量备份:只同步变化的数据细腻些,主要利用了quickcheck算法实现同步原理:1)建立好网络连接2)先进行数据信息对比3)只将变化的数据进行增量备份2.rsync软件作用说明:(1v4cp/scp/rm/ls)本地数据备份:cp[root@backup~]#cp-a/etc/hosts/tmp/hosts_cp[root@backu

    2022年10月13日
  • 云时代如何保护数据

    云时代如何保护数据

    2021年8月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号