vue学习之------vue2中的v-if、v-for、v-show

在vue2中,v-for的优先级高于v-if的优先级,就是当v-for循环中有v-if会先循环渲染,再在过程中判断v-if条件

v-if的特点:

如果状态由false变为true,会触发组件创建的生命周期(created,mounted);如果状态由true变为false,会触发组件销毁的生命周期(destroyed),性能消耗大。

所以,当v-for循环中使用了v-if,每一次循环都要依据条件直接操作DOM节点的增加和删除,造成浪费

解决办法:

1、第一种情况:如果v-if的判断条件不依赖循环列表中的数据,则把v-if写在v-for外面,这样就相当于让v-if的优先级高于v-for

2、第二种情况:如果v-if的判断依赖循环列表中的数据,就用计算属性【computed + 数组的filter()方法】先把所需循环列表先过滤好,再循环计算出的数组

v-show特点:

改变css中display:none/block

状态为false的时候,DOM元素没有被销毁,只是看不到,但是也没有占据位置

如果状态要来回切换,则比较适合使用v-show

 

posted @ 2022-09-06 16:33  程序员冒冒  阅读(706)  评论(0编辑  收藏  举报