码迷,mamicode.com
首页 > 其他好文 > 详细

vue条件渲染

时间:2018-02-09 17:24:51      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:down   改变   结构   支持   rand   dom   切换   markdown   title   

1. v-if

实例

  1. 基本使用

    Yes

  2. 如果想切换多个元素,可以使用template元素,渲染结构不包含template元素

<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</template>
  1. 使用else
<div v-if="Math.random() > 0.5">
  Now you see me
</div>
<div v-else>
  Now you don't
</div>
  1. 使用v-else-if
<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

2. 使用key管理可复用元素

不使用key,当切换登陆方式时候,input框中已经输入的内容不会变,只是placeholder中内容改变,这是因为两个模板使用了相同的元素,所以会复用,vue这样做是为了高效的渲染元素

<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的情况下,每次切换时,input输入框都将被重新渲染,

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username" key="username-input">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address" key="email-input">
</template>

3. v-show

v-show切换元素的css属性 display

<h1 v-show="ok">Hello!</h1>

4. v-if vs v-show

v-if 切换过程中条件块内的事件监听器和子组件适当地被销毁和重建,如果初始条件为假,则什么都不做,知道变为真时,才会开始渲染条件块

v-show 不管初始条件是什么,元素总会被渲染,只是简单基于css切换

根据条件灵活的选用

5. 注意

v-show 不支持