如何区分vue中的v-show 与 v-if


Posted in Javascript onSeptember 08, 2020

1. v-show

不管初始的条件是什么,元素总是会被渲染,并且只是简单的基于 CSS display: none 或者 display: block 的属性进行切换。

2. v-if

会根据初始的条件(data里自己的定义的数据)来进行真正的渲染(组件真正的销毁和重建),如果条件为真,才会开始渲染条件块,如果条件为假,则不会渲染条件块。

注意: v-if不要和v-for一起使用!

当和 v-for 一起使用时,v-for 的优先级比 v-if 更高,详见 vue官网关于 v-for 的详细描述 ,为什么不能一起使用,以下我用代码来解释一下。

<ul>
 <li
 v-for = "(item, index) in list"
 v-if = "isActive"
 :key = "item.id"
 >
 {{ item.name }}
 </li>
</ul>

以上代码将会经过如下运算

this.list.map( user=> {
 if (isActive) {
 return user.name
 }
})

因此,哪怕我们只渲染一小部分元素,也得在每次重新渲染的时候遍历整个列表,不论 isActive 是否发生了变化。如果 list 的数据有很多,就会造成性能低,页面可能卡顿的现象出现。

总结

共同点:

v-if和v-show都是通过判断绑定数据的true\false来展示的

不同点:

v-if只有在判断为true的时候才会对数据进行渲染,false的时候把包含的代码进行删除。除非再次进行数据渲染,v-if才会重新判断。可以说是用法比较倾向于对数据一次操作。
v-show是无论判断是什么都会先对数据进行渲染,只是false的时候对节点进行display:none;的操作。所以再不重新渲染数据的情况下,改变数据的值可以使数据展示或隐藏。

用法推荐:

v-if更适合于带有权限的操作,渲染时判断权限数据,有则展示该功能,没有则删除。
v-show更适合于日常使用,可以减少数据的渲染,减少不必要的操作。
综上,v-if 有更高的切换消耗,而 v-show 有更高的初始渲染消耗。
因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变,更倾向功能权限性的话 v-if 较好。

以上就是如何区分vue中的v-show 与 v-if 的详细内容,更多关于v-show 与 v-if 的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 Javascript
简洁实用的BootStrap jQuery手风琴插件
Aug 31 Javascript
JS制作图形验证码实现代码
Oct 19 Javascript
Vue插件写、用详解(附demo)
Mar 20 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
js控制随机数生成概率代码实例
Mar 21 Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
谈谈JavaScript中的函数
Sep 08 #Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
Sep 08 #Javascript
浅析JavaScript 函数柯里化
Sep 08 #Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 #Javascript
JavaScript 事件代理需要注意的地方
Sep 08 #Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 #Javascript
详解JavaScript的this指向和绑定
Sep 08 #Javascript
You might like
解析PHP汉字转换拼音的类
2013/06/18 PHP
php动态函数调用方法
2015/05/21 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
python网络编程实例简析
2014/09/26 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
python 字符串只保留汉字的方法
2018/11/16 Python
python实现AES加密和解密
2019/03/27 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
网上快餐厅创业计划书
2014/02/01 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
Python Django模型详解
2021/10/05 Python