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 相关文章推荐
5款Javascript颜色选择器
Oct 25 Javascript
jquery中实现简单的tabs插件功能的代码
Mar 02 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
jQuery实现的支持IE的html滑动条
Mar 16 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
RequireJS用法简单示例
Aug 20 Javascript
vue项目引入字体.ttf的方法
Sep 28 Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 Javascript
vue封装一个简单的div框选时间的组件的方法
Jan 06 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python 线程的五个状态
2020/09/22 Python
python中K-means算法基础知识点
2021/01/25 Python
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
关于爱情的广播稿
2014/01/16 职场文书
三年级音乐教学反思
2014/01/28 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
委托培训协议书
2014/11/17 职场文书
2016高考寄语集锦
2015/12/04 职场文书