v-if和v-for哪个优先级更高?
首先在实际开发阶段,不应该把v-if和v-for在同一个标签中使用,
在vue2中,v-for的优先级是高于v-if的,如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性能;另外需要注意的是在vue3则完全相反,v-if的优先级高于v-for,所以v-if执行时,它调用的变量还不存在,就会导致异常。
通常有两种情况下导致我们这样做
- 为了过滤列表中的项目(比如:
v-for="user in users" v-if="user.isActive")。此时定义一个计算属性(比如:activeUsers),让其返回过滤后的列表即可(比如:users.filter(u=>u.isActive)) - 为了避免渲染本应该被隐藏的列表(比如
v-for="user in users" v-if="shouldShowUsers"),此时把v-if移至容器元素上(比如ul、ol)或者外面包一层template即可。
<div id="app">
<p v-for="child in children" v-if="isFolder">{{child.title}}</p>
</div>
<script>
const vm=new Vue({
el:'#app',
data(){
return{
children:[
{
title:'red'
},
{
title:'green'
}
]
}
},
computed:{
isFolder(){
return this.children&&this.children.length>0
}
}
})
console.log(vm.$options.render);
渲染函数如下:
ƒ anonymous(
) {
with(this){return _c('div',{attrs:{"id":"app"}},_l((children),function(child){return (isFolder)?_c('p',[_v(_s(child.title))]):_e()}))}
}
优化后代码:
<template v-if="isFolder">
<p v-for="child in children">{{child.title}}</p>
</template>
渲染函数如下:
ƒ anonymous(
) {
with(this){return _c('div',{attrs:{"id":"app"}},[(isFolder)?_l((children),function(child){return _c('p',[_v(_s(child.title))])}):_e()],2)}
}
v-if和v-for哪个优先级更高?的更多相关文章
- SAP WM TO Print Control设置里,Movement Type 的优先级更高
SAP WM TO Print Control设置里,Movement Type 的优先级更高 存储类型的配置: 从storage type GRM 搬到任何地方,都不需要打印TO单. 移动类型的配置 ...
- python——比return优先级更高的语句
调用sqlmap,使用sqlmap做二次开发的时候,出现的问题: 在调用sqlmap中return,然而主程序还是会被sqlmap中的某些代码给中断. 添加try也无法阻止中断. 后来猜测中断是由ex ...
- poj 2762 Going from u to v or from v to u?
题目描述:为了让他们的儿子变得更勇敢些,Jiajia和Wind将他们带到一个大洞穴中.洞穴中有n个房间,有一些单向的通道连接某些房间.每次,Wind选择两个房间x和y,要求他们的一个儿子从一个房间走到 ...
- 转:oracle几组重要的常见视图-v$undostat,v$open_cursor,v$rowcache,v$session_longops,v$waitstat
v$undostat 本视图监控当前实例中undo空间以及事务如何运行.并统计undo空间开销,事务开销以及实例可用的查询长度. V$UNDOSTAT中的常用列 Endtime:以10分钟为间隔的结束 ...
- 转:oracle几组重要的常见视图-v$segstat,v$segment_statistics,v$filestat,v$rollstat
v$segstat 本视图实时监控段级(segment-level)统计项,支持oracle9ir2及更高版本 V$SEGSTAT中的常用列 TS#:表空间标识 OBJ#:字典对象标识 DATAOBJ ...
- 转:oracle常见重要视图-v$sql,v$sql_plan,v$sqltext,v$sqlarea,v$sql_plan_statistcs
v$sql V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cursor(子游标)存在,在V$SQLAREA为所有c ...
- 转:Oracle里几组重要的视图--v$sysstat,v$system_event,v$parameter v$system_parameter
按组分的几组重要的性能视图 1.System 的 over view v$sysstat , v$system_event , v$parameter,V$instance得到oracle_sid ...
- poj 2762 Going from u to v or from v to u?(强连通、缩点、拓扑)
题意:(理解错了)在一个洞穴中有多个room,要求任意选两个room:u.v,都能保证u.v之间有通路,注意洞穴中的路是有向边.. 分析:强连通子图中的点必然两两之间可以互通,两个强连通子图之间有通路 ...
- Oracle基本数据字典:v$database、v$instance、v$version、dba_objects
v$database: 视图结构: SQL> desc v$database; Name Null? Type - ...
随机推荐
- 论文解读(AutoSSL)《Automated Self-Supervised Learning for Graphs》
论文信息 论文标题:Automated Self-Supervised Learning for Graphs论文作者:Wei Jin, Xiaorui Liu, Xiangyu Zhao, Yao ...
- 应用程序application和库工程library之间的切换
知识点: Application作为应用程序启动:apply plugin: 'com.android.application' Library作为库工程被引用: apply plugin: 'com ...
- 数据建模软件Chiner,颜值与实用性并存
目录 一.chiner介绍 二.值得关注的功能点 2.1. 兼容各种格式的数据建模文件 2.2. 支持多数据库.代码生成 2.3. 支持逻辑视图与物理视图设计 2.4. 自动生成数据库文档 三.总结 ...
- C# 滑动验证码|拼图验证|SlideCaptcha
使用背景: 关于滑动验证码的使用场所还是非常多的,如: 调取短信接口之前,和 注册请求之前 或者 频繁会调用的接口 都需要加这个拼图验证.这里先上一下效果图吧(心中无码,自然高清). 话不多说,开撸! ...
- JMeter如何设置中文
打开Option => Choose Language => Chinese
- WorkCount
此项目码云链接 软件测试方法和技术第二次作业 1 作业内容 根据WordCount的需求描述,先编程实现,再编写单元测试,最后撰写博客.至少完成需求中的基本功能. 2 WordCount需求说明 Wo ...
- os.system 裁掉片头 ffmpeg
顺序执行多个指令os.system执行终端命令os.system('start ffmpeg -i x222.mp4 "%s.mp3" && del x222.mp ...
- 2020 最烂密码 TOP 200 大曝光!
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 整理 | 王晓曼 出品 | 程序人生 (ID:coder ...
- iptables系列教程(二)| iptables语法规则
一个执着于技术的公众号 iptables 命令基本语法 " iptables [-t table] command [链名] [条件匹配] [-j 目标动作] 以下是对 iptables 命 ...
- 面试官给我挖坑:rm删除文件之后,空间就被释放了吗?
在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意. 产生一个指定大小的随机内容文件 我们先看一下当前各个挂载目录的空间大小: $ df -h /d ...