Vue学习(4)条件渲染

v-if

v-if 实现按条件渲染目标

<div v-if="ok">yes</div>

#在<template>元素上使用v-if

当分组渲染时,将<template>元素作为不可见的包裹元素,并在上面使用v-if,实现分组条件渲染。

#v-else

v-else必须在v-if或者v-else-if后。

<div v-if="ok">yes</div>
<div v-else>no</div>

#v-else

2.1.0新增
v-else-if必须在v-if或者v-else-if后,可连用。

<div v-if="type == 'A' ">A</div>
<div v-else-if="type == 'B' ">B</div>
<div v-else>not A/B</div>

#用key管理可复用的元素

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>

当切换显示时,<label><input>都不会销毁,仅仅是改变了不同的html属性(<label>的text和<input>的placeholder),因此<input>的内容不会改变。

当两个元素应当完全独立时,只要赋予不同的key属性,就可以了。

<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>

v-show

v-if类似,v-show可以实现条件渲染。
不过区别是:v-show不管条件如何,都会将元素渲染,只是简单切换css属性display

注意:v-show不支持<template>元素和v-else.

v-show vs v-if

v-ifv-for 同时使用

不推荐同时使用 v-ifv-for
v-ifv-for同时使用时,v-for 的优先级高于 v-if

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,087评论 0 29
  • 条件渲染 v-if 在<template>元素上使用v-if条件渲染分组 最终的渲染结果将不包含<template...
    oWSQo阅读 790评论 1 0
  • 主要还是自己看的,所有内容来自官方文档。 介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 vie...
    Leonzai阅读 3,401评论 0 25
  • 1. Vue 实例 1.1 创建一个Vue实例 一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实...
    王童孟阅读 1,038评论 0 2
  • 这一篇最长,有47篇,不过总的说来,辜鸿铭的翻译有点怪。有时候意思很不是原来的味道。尤其他不太愿意涉及春秋时候的具...
    山巅一寺阅读 573评论 0 1