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 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
javascript 遍历验证所有文本框的值
Aug 27 Javascript
js控制frameSet示例
Sep 10 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
JavaScript实现斗地主游戏的思路
Feb 29 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
解决layui下拉框监听问题(监听不到值的变化)
Sep 28 Javascript
使用JS实现动态时钟
Mar 12 Javascript
Vue关于组件化开发知识点详解
May 13 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中文乱码
2009/11/26 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python实现的科学计算器功能示例
2017/08/04 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python实现udp聊天窗口
2020/03/31 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
python re模块常见用法例举
2021/03/01 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
三维科技面试题
2013/07/27 面试题
工程总经理工作职责
2013/12/09 职场文书
工商治理实习生的自我评价分享
2014/02/20 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
小学国庆节活动总结
2015/03/23 职场文书