如何区分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 相关文章推荐
jQuery UI-Draggable 参数集合
Jan 10 Javascript
JavaScript中两种链式调用实现代码
Jan 12 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
jquery遍历checkbox介绍
Feb 21 Javascript
window.returnValue使用方法示例介绍
Jul 03 Javascript
js实现跨域的多种方法
Dec 25 Javascript
JavaScript验证知识整理
Mar 24 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
JavaScript字符串转数字的5种方法及遇到的坑
Jul 16 Javascript
JS常用排序方法实例代码解析
Mar 03 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 函数学习简单小结
2010/07/08 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
详细解析Python中的变量的数据类型
2015/05/13 Python
Python的迭代器和生成器
2015/07/29 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
护士演讲稿范文
2014/01/05 职场文书
18岁生日感言
2014/01/12 职场文书
政府门卫岗位职责
2014/04/29 职场文书
捐书活动总结
2014/05/04 职场文书
新农村建设典型材料
2014/05/31 职场文书
会计个人实习计划书
2014/08/15 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
财政局个人总结
2015/03/04 职场文书
面试通知短信
2015/04/20 职场文书
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers