1.v-if和v-for哪个优先级高?如何正确使用避免性能问题

本文探讨了Vue中v-for和v-if指令的执行顺序,通过源码分析得出v-for优先级高于v-if。当同时存在时,v-if条件判断会在每次循环中执行,可能导致性能浪费。为优化,建议在外层使用v-if进行预过滤,再内部使用v-for进行循环。
摘要由CSDN通过智能技术生成
源码:el.staticRoot=>el.once=>el.for=>el.if=>el.tag 执行顺序

在这里插入图片描述

两者同级时,渲染函数如下:

(function anonymous(
){
with(this){return_ .c('div' ,{attrs:{"id":"demo"}},[_ _c('h1' ,[_ _v("v-for和v-i f谁的优先级高?应该
如何正确使用避免性能问题? ")]),_v(" ")_1((children)function(chi1d){return (isFolder)?_ .c('p' ,[_ v(_ s(chi1d.tit1e))]): e()})],2)}
})

_l包含了isFolder的条件判断

两者不同级时,渲染函数如下:

(function anonymous (
){
with(this){return_ c('div' ,{attrs:{"id":"demo"}},[_ .c('h1',[_ _v("v-for和v-if谁的优先级高?应该
如何正确使用避免性能问题? ")]),_v(" ")
(isFo1der)?_1((chi 1dren)function(chi1d){return . _c('p',[_ _v(_ s(child. tit1e))])}): _e()],2)}
})

不管怎样都会先做循环循环里对每一项做isFolder判断,明显不合理

_l :列表循环语句 isFo1der:条件判断

先判断条件,在看是否执行

结论:

1.v-for优先级高于v-if(通过测得代码,在源码中找到答案,v-for高于v-if)
2.如果同时出现,每次渲染都会先进行循环再判断条件,无可避免的会浪费性能
3.要避免出现这种情况,则外侧嵌套template,在这一层先进行v-if判断是否需要执行,然后内部进行v-for循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值