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 相关文章推荐
javascript 自定义事件初探
Aug 21 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 Javascript
Boostrap模态窗口的学习小结
Mar 28 Javascript
JavaScript禁止复制与粘贴的实现代码
May 16 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
bootstrap table表格插件之服务器端分页实例代码
Sep 12 Javascript
js贪心算法 钱币找零问题代码实例
Sep 11 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 Javascript
jquery实现有过渡效果的tab切换
Jul 17 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
PHP中for循环语句的几种变型
2007/03/16 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
PHP实现简易图形计算器
2020/08/28 PHP
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
Python正则表达式分组概念与用法详解
2017/06/24 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
python制作图片缩略图
2019/04/30 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
构建高效的python requests长连接池详解
2020/05/02 Python
python轮询机制控制led实例
2020/05/03 Python
Python绘制组合图的示例
2020/09/18 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
《槐乡五月》教学反思
2014/04/25 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
承兑汇票延期证明
2015/06/23 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python