Vue.js使用v-show和v-if的注意事项


Posted in Javascript onDecember 13, 2016

关于两者的区别,官网是这样说的:

在切换 v-if 块时,Vue.js 有一个局部编译/卸载过程,因为 v-if 之中的模板也可能包括数据绑定或子组件。v-if 是真实的条件渲染,因为它会确保条件块在切换当中合适地销毁与重建条件块内的事件监听器和子组件。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)。

相比之下,v-show 简单得多——元素始终被编译并保留,只是简单地基于 CSS 切换。

一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。

下面通过示例来看看在使用v-show与v-if时的注意事项

1、通过Vue.js中v-if指令来判断Vue中某个对象是否为空(该对象与后台传来的json数据绑定),从而判断是否显示分页条,在实际过程中发现,第一次请求后台数据,进行渲染过程后,分页条没有显示,但之后的请求后台数据再渲染,分页条都可正常显示。

问题如图所示:

Vue.js使用v-show和v-if的注意事项

2、原因

查看页面未渲染dom结构,发现上述分页条所在的div,没有出现页面中,这是由于vue组件初始化时,由于list为空导致id为example的div删除了,所以后续分页操作,针对是空dom对象,在第一次渲染结束后,由于list不为空,该div又加到该节点上,所以而后的分页条都可正常显示。

Vue.js使用v-show和v-if的注意事项

3、解决

将v-if指令替换为v-show指令,在条件为真的情况下,v-if将其所在dom及其子dom都删除,而v-show是将该dom加上了“display:none”,使其隐藏了起来。修改代码及效果如下

Vue.js使用v-show和v-if的注意事项

Vue.js使用v-show和v-if的注意事项

使用心得:

对于V-show,V-if如何选择,本人有以下建议:

1、对于管理系统的权限列表的展示,这里可以使用V-if来渲染,如果使用到V-show,对于用户没有的权限,在网页的源码中,仍然能够显示出该权限,如果用V-if,网页的源码中就不会显示出该权限。(在前后台分离情况下,后台不负责渲染页面的场景。)
2、对于前台页面的数据展示,这里推荐使用V-show,这样可以减少开发中不必要的麻烦。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
微信小程序实现拖拽功能
Sep 26 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 Javascript
使用js获取身份证年龄的示例代码
Dec 11 Javascript
用JS实现飞机大战小游戏
Jun 09 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 #Javascript
Es6 写的文件import 起来解决方案详解
Dec 13 #Javascript
JS实现图片垂直居中显示小结
Dec 13 #Javascript
Javascript this 函数深入详解
Dec 13 #Javascript
JS实现动画兼容性的transition和transform实例分析
Dec 13 #Javascript
简单实现js浮动框
Dec 13 #Javascript
javascript中this关键字详解
Dec 12 #Javascript
You might like
php 将excel导入mysql
2009/11/09 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
JS中的三个循环小结
2017/06/20 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
es6数值的扩展方法
2019/03/11 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
python Zmail模块简介与使用示例
2020/12/19 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
问卷调查计划书
2014/01/10 职场文书
会计职业生涯规划书
2014/01/13 职场文书
工会主席岗位责任制
2014/02/11 职场文书
农业项目建议书
2014/08/25 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL