浅析Vue.js 中的条件渲染指令


Posted in Javascript onNovember 19, 2018

1 应用于单个元素

Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件。

html:

<div id="app">
 <p v-if="type===1">拌面</p>
 <p v-else-if="type===2">扁肉</p>
 <p v-else="type===3">其它</p>
</div>

js:

<script>
 var app = new Vue({
  el: '#app',
  data: {
   type: 2
  }
 });
</script>

输出结果:

扁肉

当表达式的值为 true 时,当前元素或组件及所有的子节点都会被渲染出来。

2 应用于多个元素

上述示例中的代码只能判断当前元素, 如果需要一次性判断多个元素,那么可以使用 <template> 元素并在该元素中使用条件指令,最终的渲染结果不会包含 <template> 元素 。

html:

<div id="app2">
 <template v-if="type==='菜单'">
  <p>拌面</p>
  <p>扁肉</p>
  <p>其它</p>
 </template>
</div>

js:

var app2 = new Vue({
 el: '#app2',
 data: {
  type:'菜单'
 }
});

渲染后的代码:

<div id="app2"><p>拌面</p> <p>扁肉</p> <p>其它</p></div>

3 性能上的考量

另外 Vue.js 出于性能方面的考虑,会尽可能地复用已有的元素。

html:

<div id="app3">
 <template v-if="type==='mobile'">
  <label>手机号:</label>
  <input placeholder="请输入手机号">
 </template>
 <template v-else>
  <label>邮箱:</label>
  <input placeholder="请输入邮箱">
 </template>
 <button @click="toggleAccount">切换账号</button>
</div>

js:

var app3 = new Vue({
 el: '#app3',
 data: {
  type: 'mobile'
 },
 methods: {
  toggleAccount: function () {
   this.type = (this.type === 'mobile' ? 'mail' : 'mobile');
  }
 }
});

效果( demo ):

浅析Vue.js 中的条件渲染指令

从示例效果中我们可以发现,输入框的内容并没有发生变化,说明这里 Vue.js 复用了 <input> 元素。

我们也可以通过指定 input 元素的唯一的 key 来避免被复用。

html:

<div id="app3">
 <template v-if="type==='mobile'">
  <label>手机号:</label>
  <input placeholder="请输入手机号" key="mobile">
 </template>
 <template v-else>
  <label>邮箱:</label>
  <input placeholder="请输入邮箱" key="email">
 </template>
 <button @click="toggleAccount">切换账号</button>
</div>

效果:

浅析Vue.js 中的条件渲染指令

我们为每一个 input 指定了 key 属性,所以它们是独立的,每次点击都不一样。而这里的 label 是可复用的,因为我们没有给它设定 key 属性。

总结

以上所述是小编给大家介绍的Vue.js 中的条件渲染指令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery实现漂浮在网页右侧的qq在线客服插件示例
May 13 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
javascript拖拽应用实例
Mar 25 Javascript
详解js的六大数据类型
Dec 27 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
React中上传图片到七牛的示例代码
Oct 10 Javascript
ReactNative之FlatList的具体使用方法
Nov 29 Javascript
解决Layui数据表格的宽高问题
Sep 28 Javascript
原生js实现随机点餐效果
Dec 10 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
Apr 26 Javascript
vue+canvas实现拼图小游戏
Sep 18 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 #Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 #Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 #Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 #Javascript
Javascript实现动态时钟效果
Nov 17 #Javascript
使用Javascript简单计算器
Nov 17 #Javascript
JS实现图片切换效果
Nov 17 #Javascript
You might like
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
PHP 日常开发小技巧
2009/09/23 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
jQuery:unbind方法的使用详解
2017/08/14 jQuery
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python生成验证码实例
2014/08/21 Python
浅析Python多线程下的变量问题
2015/04/28 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
物流仓储实习自我鉴定
2013/09/25 职场文书
会计主管岗位职责范文
2013/11/08 职场文书
给海归自荐信的建议
2013/12/13 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
上课迟到检讨书
2014/02/19 职场文书
学生请假条
2014/04/11 职场文书
服务标兵事迹材料
2014/05/04 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
企业投资意向书
2015/05/09 职场文书
爱国影片观后感
2015/06/18 职场文书
php解析非标准json、非规范json的方式实例
2022/05/10 PHP