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字符串常用类使用方法汇总
Apr 14 Javascript
javascript实现unicode与ASCII相互转换的方法
Dec 10 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
详解vue组件化开发-vuex状态管理库
Apr 10 Javascript
PHP 实现一种多文件上传的方法
Sep 20 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
微信小程序使用checkbox显示多项选择框功能【附源码下载】
Dec 11 Javascript
mpvue构建小程序的方法(步骤+地址)
May 22 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
JS通过识别id、value值对checkbox设置选中状态
Feb 19 Javascript
利用js canvas实现五子棋游戏
Oct 11 Javascript
javascript实现固定侧边栏
Feb 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python正则表达式知识汇总
2017/09/22 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
大学生军训自我评价分享
2013/11/09 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
开学典礼感言
2014/02/16 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
师德师风个人反思
2014/04/28 职场文书
团支部建设方案
2014/05/02 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
基于Python实现将列表数据生成折线图
2022/03/23 Python