v-if是一个指令,须要添加在元素上使用。能够与v-else、v-else-if配套使用,v-else、v-else-if必须跟在v-if、v-else-if以后。例如:code
<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>
想要多个元素切换时,能够用template标签包裹起来,并在template标签上使用v-if指令,最终渲染出来不会有template标签。事件
为了高效的渲染元素,v-if会复用已有元素而不是从头开始渲染。例如: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>
当在input中输入文字,再切换到email登录时,输入框中的值不回清空,由于元素没有从新渲染,然是仅仅改变了placeholder中的值。一样label标签也没有从新渲染,然是仅仅改变了label中的文本。email
想要元素不被复用时,只须要在元素中添加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>
此时input不会被复用,label仍被复用。渲染
v-show和v-if使用方法同样,做为一个指令使用。 但是v-show控制的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display,在条件不成立时display属性为none。v-show 不支持 template 语法。语法