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实现网页上的浮动广告的简单方法
Jun 14 Javascript
jQuery对象的selector属性用法实例
Dec 27 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
Aug 16 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
从零开始最小实现react服务器渲染详解
Jan 26 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
全面了解JavaScript的作用域链
Apr 03 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
Jun 25 Javascript
JS实现音乐钢琴特效
Jan 06 Javascript
JavaScript组合模式---引入案例分析
May 23 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
php 邮件发送问题解决
2014/03/22 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
vue实现评价星星功能
2020/06/30 Javascript
python选择排序算法的实现代码
2013/11/21 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
经典c++面试题二
2015/08/14 面试题
大三学生入党思想汇报
2014/01/02 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
教师师德演讲稿
2014/05/06 职场文书
党员承诺书格式
2014/05/21 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
情感电台广播稿
2015/08/18 职场文书
施工安全协议书
2016/03/22 职场文书
JS数组去重详情
2021/11/07 Javascript
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis