012.v-show与v-if与v-for
Posted Ruovan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了012.v-show与v-if与v-for相关的知识,希望对你有一定的参考价值。
v-show与v-if与v-for
01. v-show 与 v-if
(1)区别
-
v-if
是真正的条件渲染,直到条件第一次变为真时,才会开始渲染(懒加载)- v-if指令是直接销毁和重建DOM节点,达到让元素显示和隐藏的效果
-
v-show
不管初始条件是什么都会渲染,并且只是简单地基于 CSS 的display
属性进行切换 -
v-show
只是 CSS 级别的display: none;
和display: block;
之间的切换
(2)使用场景
v-if
适用于不需要频繁切换条件的场景(一次性渲染完的)- 在组件上使用可触发组件的生命周期
v-show
则适用于需要非常频繁切换条件的场景- 不可用于组件
(3)性能优化
- 如何使用
v-if
进行性能优化?- 因为当
v-if="false"
时,内部组件是不会渲染的 - 所以在特定条件才渲染部分组件(或内容)时,可以先将条件设置为
false
- 需要时再设置为
true
(或通过异步操作,比如$nextTick
) - 这样可以优先渲染重要的其它内容,合理利用,以进行性能优化
- 因为当
02. v-if 与 v-for
应尽量避免在
v-for
中使用v-if
(1)优先级
- 1、
v-for
优先于v-if
被解析 - 2、如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性能
- 3、要避免出现这种情况,则在外层嵌套
<template>
,在这一层进行v-if
判断,然后在内部进行v-for
循环 - 4、如果条件出现在循环内部,可通过计算属性提前过滤掉那些不需要显示的项
(2)关于v-for中的key
以上是关于012.v-show与v-if与v-for的主要内容,如果未能解决你的问题,请参考以下文章