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 相关文章推荐
犀利的js 函数集合
Jun 11 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
Aug 28 Javascript
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
jquery.ui.progressbar 中文文档
Nov 26 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
Jquery 例外被抛出且未被接住原因介绍
Sep 04 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
Apr 30 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
微信小程序 弹窗输入组件的实现解析
Aug 12 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 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
JS 网站性能优化笔记
2011/05/24 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
js如何验证密码强度
2020/03/18 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
python sort、sorted高级排序技巧
2014/11/21 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
Python做文本按行去重的实现方法
2016/10/19 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
Python logging模块原理解析及应用
2020/08/13 Python
如何编写python的daemon程序
2021/01/07 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
标准导师推荐信(医学类)
2013/10/28 职场文书
师范毕业生个人求职信
2013/12/09 职场文书
销售部主管岗位职责
2013/12/18 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL