vue学习第四天——条件渲染

news/2025/2/22 18:38:22

条件渲染很简单,就是用v-if标签,然后扩展到v-else,最后到v-else-if,组成一整套判断语句。

<template> 元素上使用 v-if 条件渲染分组

这是一个小应用,因为 v-if 是一个指令,所以必须将它添加到一个元素上。但是如果想切换多个元素呢?此时可以把一个 <template> 元素当做不可见的包裹元素,并在上面使用 v-if。最终的渲染结果将不包含 <template> 元素。

用 key 管理可复用的元素

Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。
这么做除了使 Vue 变得非常快之外,还有其它一些好处。例如,如果你允许用户在不同的登录方式之间切换:

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address">
</template>

那么在上面的代码中切换 loginType 将不会清除用户已经输入的内容。因为两个模板使用了相同的元素, 不会被替换掉——仅仅是替换了它的 placeholder。

自己动手试一试,在输入框中输入一些文本,然后按下切换按钮:

这样也不总是符合实际需求,所以 Vue 为你提供了一种方式来表达“这两个元素是完全独立的,不要复用它们”。只需添加一个具有唯一值的 key 属性即可:

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username" key="username-input">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address" key="email-input">
</template>

现在,每次切换时,输入框都将被重新渲染。请看:

注意,

v-show

v-show只是改变div的disable属性而已,他是一定会渲染这个div的。

v-if vs v-show

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

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

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

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

不推荐同时使用 v-if 和 v-for。请查阅风格指南(https://cn.vuejs.org/v2/style-guide/#%E9%81%BF%E5%85%8D-v-if-%E5%92%8C-v-for-%E7%94%A8%E5%9C%A8%E4%B8%80%E8%B5%B7-%E5%BF%85%E8%A6%81)以获取更多信息。


http://www.niftyadmin.cn/n/1197981.html

相关文章

zclip结合easyui实现复制datagrid每行特定单元格数据的功能

在easyui的datagrid里面&#xff0c;实现复制每行特定单元格的功能&#xff0c;关键是想想如何获取到每个单元格的数据,功能是点击按钮"复制",然后复制object的下载地址&#xff0c;截图如下所示: 进行下面的代码展示之前假设你已经把环境准备好了,也就是说easyui和z…

【云原生】⚡手把手教你搭建集群环境⚡Linux服务器集群+Docker+Kubernetes 完整集群搭建

目录 一、创建Linux集群环境&#xff1a; 1.创建虚拟机&#xff1a; 选择时区&#xff1a; 配置网络&#xff1a; 设置密码和用户&#xff1a; 系统安装选择&#xff1a; 2.配置虚拟机&#xff1a; 修改虚拟机IP&#xff1a; 在虚拟机中修改配置&#xff1a; 修改主机名…

vue学习小心得

vue的元素复用无疑是很厉害的&#xff0c;如果你要改动一些dom元素&#xff08;例如v-if修改&#xff09;&#xff0c;他会复用已经有的&#xff0c;如果for循环所循环的数组内部只是改变数据顺序&#xff0c;他也就只将dom中数据的内容改成对应的&#xff0c;而不会重新渲染do…

Android内存优化之内存缓存

2019独角兽企业重金招聘Python工程师标准>>> 什么是缓存&#xff1f; 缓存技术原理就是把用户访问的所有对象看作一个全集&#xff0c;经过算法标记哪些是用户经常访问的对象&#xff0c;把这些对象放到一个集合里&#xff0c;这个集合是全集一个子集&#xff0c;下…

【CSS】<Cascading Style Sheets>CSS3常用样式属性

目录 一、CSS样式引入&#xff1a; 1.行内式&#xff08;内联样式&#xff09;&#xff1a; 2.内部样式表&#xff08;内嵌式&#xff09;&#xff1a; 3.外部样式表&#xff08;外链式&#xff09;&#xff1a; 三种样式表总结&#xff1a; 二、CSS基础选择器&#xff1…

vue学习第五天——列表渲染

用 v-for 把一个数组对应为一组元素 很简单&#xff0c;如下&#xff1a; <ul id"example-1"><li v-for"item in items">{{ item.message }}</li> </ul>var example1 new Vue({el: #example-1,data: {items: [{ message: Foo }…

vsftp安装架设

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件&#xff0c;它的全称是Very Secure FTP 从此名称可以看出来&#xff0c;编制者的初衷是代码的安全。安全性是编写VSFTP的初衷&#xff0c;除了这与生俱来的安全特性以外&#xff0c;高速与高稳定性也是VSFTP的两个重要…

ViewPort的作用

https://blog.csdn.net/u012402190/article/details/70172371