Vue

Vue条件渲染

2018-08-15  本文已影响1人  ChangLau

Vue 条件渲染

<div v-if="current === 'Name'">Name</div>
<div v-else-if="current === 'Address'">Address</div>
<div v-else="current === 'Email'">Email</div>

v-else-if 必须跟在 v-if 后面,v-else 必须跟在 v-if 或者 v-else-if 后面

如果需要一次切换多个元素,可以使用 template 元素当作一个不可见的包裹元素,在其上面使用 v-if 实现效果。渲染结果不会显示 tempalte 元素。

<template v-if="show">
    <div>A</div>
    <div>B</div>
    <div>C</div>
</template>

Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。

<!-- 复用input -->
<template v-if="loginType === 'username'">
    <label>Username</label>
    <input placeholder="Enter your username">
</template>
<template v-else>
    <label>Email</label>
    <input placeholder="Enter your email address">
</template>
<!-- 当元素中key值不一样的时候,Vue不进行复用(这两个元素是完全独立的,不要复用它们) -->
<template v-if="loginType === 'username'">
    <label>Username</label>
    <input placeholder="Enter your username" key="username">
</template>
<template v-else>
    <label>Email</label>
    <input placeholder="Enter your email address" key="email">
</template>

v-show 渲染的元素一直显示在 DOM 中,只是简单的切换 display 状态。

<div v-show="current === 'Name'">Name</div>
<div v-show="current === 'Address'">Address</div>
<div v-show="current === 'Email'">Email</div>
v-show@2x.png
注意,v-show 不支持<template> 元素,也不支持 v-else。

v-if VS v-show

指令 弊端 备注
v-if 更高的切换开销 适用于切换不高的场景
v-show 更高的初始化开销 适用于切换频繁的场景
上一篇下一篇

猜你喜欢

热点阅读