条件渲染

144 阅读2分钟

1.v-if

v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回truthy值的时候被渲染。也可以用v-else添加一个“else 块”。

1.1在template元素上使用v-if条件渲染分组

因为v-if是一个指令,所以必须将它添加到一个元素上。但是如果想切换多个元素呢?此时可以把一个template元素当作不可见的包裹元素,并在上面使用v-if,最终的渲染结果将不包含template元素

1.2v-else

也可以使用v-else指令来表示v-if的“else 块”,v-eles元素必须紧跟在v-if或者v-else-if的元素后面,否则它将不会被识别

1.3v-else-if

v-else-if,顾名思义,充当v-if的“else-if 块”,并且可以连续使用,与v-else类似,v-else-if也必须紧跟在带v-if或者v-else-if的元素之后

2.v-show

另一个用于条件性地展示元素的选项是v-show指令,用法大致一样。

  • 不同的是,带有v-show的元素始终会被渲染并保留在DOM中,v-show只是简单地切换元素的CSS property:display
  • 另外,v-show不支持template元素,也不支持v-else

3.v-if VS v-show

  • v-if是“真正”的条件渲染,因为它会确保在切换过程中,条件块内的事件监听器和子组件适当地被销毁和重建
  • v-if也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块
  • 相比之下,v-show就简单的多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于CSS进行切换
  • 一般来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销。
  • 因此,如果需要非常频繁地切换,则使用v-show较好;如果在运行时条件很少改变,则使用v-if较好

4.v-if与v-for一起使用

不推荐同时使用v-if和v-for。

  • 当v-if与v-for一起使用时,v-if具有比v-for更高的优先级