如何区分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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
javascript,jquery闭包概念分析
Jun 19 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
Dec 28 Javascript
微信小程序实现列表页的点赞和取消点赞功能
Nov 02 Javascript
vue-cli3+typescript初体验小结
Feb 28 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 27 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 Javascript
js实现复制粘贴的两种方法
Dec 04 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的一个登录的类 [推荐]
2007/03/16 PHP
PHP读取xml方法介绍
2013/01/12 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
python 实现性别识别
2020/11/21 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
三字经教学反思
2014/04/26 职场文书
师范生见习报告范文
2014/11/03 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
法务专员岗位职责
2015/02/14 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
浅谈Python中对象是如何被调用的
2022/04/06 Python
MySQL创建管理RANGE分区
2022/04/13 MySQL
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js