Vue语法学习第五课——条件渲染
① v-if 、v-else-if 、v-else
<div v-if="type === 'A'">
A
</div>
<div v-else-if="type === 'B'">
B
</div>
<div v-else-if="type === 'C'">
C
</div>
<div v-else>
Not A/B/C
</div>
(1)v-if 指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回 truthy 值的时候被渲染。
(2)v-else-if 和 v-else 必须紧跟在 v-if 的元素之后
用于 <template> 可使用 key 管理可复用的元素:
<div id="app0">
<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><br/>
<button @click="changeLoginType">{{loginType}}</button>
</div>
var vm = new Vue({
el:"#app0",
data:{
loginType : "username"
},
methods : {
changeLoginType : function(){
if(this.loginType === 'username'){
this.loginType = "emailAddress";
}
else{
this.loginType = "username";
}
}
}
});
此时把这个 <template> 元素当做不可见的包裹元素,并使用v-if 。 最终的渲染结果不包含 <template> 元素。
Vue 提供了 key 这个属性来表达“这两个元素是完全独立的,不要复用它们”。独立元素的 key 值应是唯一值(不添加key值的label元素仍然会被高效地复用)。
② v-show
v-show 与 v-if 类似,都是用于根据条件展示元素,v-show 用法如下:
<h1 v-show="ok">Hello!</h1>
v-show 的元素始终会被渲染并保留在DOM中,其作用只是简单的切换元素的 css 属性的 display。
注:v-show 不支持 template 也没有对应的 v-else 。
③ v-show 和 v-if 对比
(1)v-if 会确保在切换过程中,条件块内的事件监听器和子组件适当地被销毁和重建。
v-if 是惰性的:只有在条件第一次变为真时才会开始渲染条件块。
(2)v-show 不论条件是否为真,总是会渲染元素,并且在条件的值改变时只做 CSS 的切换。
(3)v-if 具有更高的切换开销;v-show具有更高的初始渲染开销。
如果频繁切换应优先选择 v-show ;如果条件几乎不会改变时优先选择 v-if 。
Vue语法学习第五课——条件渲染的更多相关文章
- Vue语法学习第四课(2)——class与style的绑定
之前学到的指令 v-bind 在用于绑定class和style时,表达式结果可以是字符串.数组.对象. 一.绑定HTMLClass ① 对象语法 <div class="static& ...
- Vue语法学习第四课(1)——组件简单示例
在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例. 设法将应用分割成了两个更小的单元.子单元通过 prop 接口与父单元进行了良好的解耦. <div id="ap ...
- Vue语法学习第三课——计算属性
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.对于任何复杂逻辑,都应当使用计算属性. <div id="example&qu ...
- Go语言学习笔记五: 条件语句
Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...
- Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍
原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...
- react 入坑笔记(五) - 条件渲染和列表渲染
条件渲染和列表渲染 一.条件渲染 条件渲染较简单,使用 JavaScript 操作符 if 或条件运算符来创建表示当前状态的元素,然后让 React 根据它们来更新 UI. 贴一个小栗子: funct ...
- vue class与style绑定、条件渲染、列表渲染
列表渲染 根据我例子的需要,先来说下,列表渲染使用到的是v-for指令,需要使用 item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名,具体使用方法 ...
- python学习(五) 条件、循环和其他语句
第五章 条件.循环和其他语句 5.1 print和import的更多信息 5.1.1 使用逗号输出 >>> print('age',43,45) // 可以用逗号隔开 ...
- Vue语法学习第一课——插值
学习关于Vue的插值语法 ① 文本值 : "Mustache"语法,即双大括号 <span>Message:{{msg}}</span> 注:双大括号中的m ...
随机推荐
- PHP算法练习1:两数之和
leetcode地址:https://leetcode-cn.com/problems/two-sum/description/ 题目: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. ...
- Docker五大优势:持续集成、版本控制、可移植性、隔离性和安全性
随着Docker技术的不断成熟,越来越多的企业开始考虑使用Docker.Docker有很多的优势,本文主要讲述了Docker的五个最重要优势,即持续集成.版本控制.可移植性.隔离性和安全性. 对于Do ...
- java mvn:安装jar包
mvn install:install-file -Dfile=fastdfs-client-java-1.27-SNAPSHOT.jar(路径) -DgroupId=org.csource -Dar ...
- 双重ScrollView,RecyclerView联动实例
最近收到一个需求,如图,大家一看,不就是一个简单的表格吗,RecyclerView就搞定了 我一开始也是这么想的,但是当我继续听下去 需求是左边党支部栏目只能上下滑动,之后联动右边下方表格一起上下滑动 ...
- Fragment调用startActivityForResult导致的回调Activity无法获取正确的requestId的问题
今天遇到了一个问题 从Fragment内调用了startActivityForResult方法设置了requestId是1 但是在Activity内的onActivityResult的回调内 获得的r ...
- flutter -------- ListView的使用
学习了Flutter,来分享一下学习的一些常用的知识,先来说说ListView 案例效果: ListView是一个类似列的widget,它的内容对于其渲染框太长时会自动提供滚动. ListView 摘 ...
- Mac OS X 绑定80端口,不装nginx的小技巧
Mac OS X 因为要绑定80端口需要ROOT权限, 但是如果用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除. 为此, 我们可以通过pfc ...
- Could not autowire. No beans of 'xxxx' type found的错误
在Idea的spring工程里,经常会遇到Could not autowire. No beans of 'xxxx' type found的错误提示.但程序的编译和运行都是没有问题的,这个错误提示并 ...
- 基于thinkphp的后台管理系统模板快速搭建
当我们在搭建网站的时候,后端开发人员在编写后台的管理系统的时候,往往会因为缺少一个合适的后台管理系统的模板,而必须去重新编写一个,这几天由于工作上的安排,需要去研究一下thinkcmf的后台管理系统, ...
- DomeOS部署
http://gitbook.domeos.org/ 按照官方一键部署脚本完之后,发现监听的IP地址是在IPv6上面. vim /etc/default/grubadd ipv6.disable=1 ...