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 19 Javascript
jquery模拟按下回车实现代码
Sep 20 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
jquery进行数组遍历如何跳出当前的each循环
Jun 05 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
如何编写一个完整的Angular4 FormText 组件
Nov 18 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
element-ui 上传图片后清空图片显示的实例
Sep 04 Javascript
详解js 创建对象的几种方法
Mar 08 Javascript
vue 中几种传值方法(3种)
Nov 12 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
PHP4在Windows2000下的安装
2006/10/09 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
Python flask框架post接口调用示例
2019/07/03 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python的命名规则知识点总结
2019/10/04 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
物业保安主管岗位职责
2013/12/25 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
《泉水》教学反思
2014/04/11 职场文书
实习评语大全
2014/04/26 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
2015年统战工作总结
2015/05/19 职场文书
医学会议开幕词
2016/03/03 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android