条件渲染,即根据一定的条件来判断是否渲染当前页面。
结果如下:
改变isShow的值之后,就会发生变化。
用于表达v-if的else部分。
<div id="app"> <h4 v-if="isShow"> v-if,isShow为true时 <p>1</p> <p>2</p> </h4> <h4 v-else> v-else部分 </h4> </div> <script> const app=new Vue({ el:'#app', //用于管理要挂载的数据 data:{ //定义数据 isShow:true } }); </script>结果如下:
v-else部分没有被渲染出来。 若改变isShow的值,则如下图。
v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别
2.1.0 新增
<div id="app"> <h4 v-if="age<=18"> 未成年人! </h4> <h4 v-else-if="age<45"> 成年了,但小于45岁! </h4> <h4 v-else> 你大于等于45岁! </h4> </div> <script> const app=new Vue({ el:'#app', //用于管理要挂载的数据 data:{ //定义数据 age:7 } }); </script>结果如下图:
v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。这么做除了使 Vue变得非常快之外,还有其它一些好处。(涉及Vue虚拟DOM内容,这里先不详细讲)
不过据此,当使用v-if时,可以通过key来控制是否重新渲染。 若二者key不同,就会重新渲染,而非复用。 如下代码段,两个<input>是否重新渲染,可以由key控制。
<template v-if="loginType === 'username'"> <label>Username</label> <input placeholder="username" key="ab"> </template> <template v-else> <label>Email</label> <input placeholder="email" key="aa"> </template>根据条件展示元素,与v-if类似。
<h1 v-show="ok">Hello!</h1>不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS property display。
注意,v-show 不支持 <template> 元素,也不支持 v-else。
v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
条件为false时,v-if什么都不会做,其元素不会出现在DOM中。
v-show不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。 只是增加了一个行内样式dispaly:none。
选择一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。 如果需要非常频繁地切换,则使用 v-show 较好; 如果在运行时条件很少改变,则使用 v-if 较好。