VUE中的if和show的区别

71 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

13. v-if 和 v-show 的区别

实现原理不同:

  • v-if指令会动态的创建或者移除DOM元素, 从而控制元素在页面上的显示与隐藏;
  • v-show指令会动态为元素添加或移除style="display:none;"样式,从而控制元素的显示与隐藏;

性能消耗不同: v-if 有更高的切换开销,而v-show有更高的初始渲染开销。因此:

  • 如果需要非常频繁地切换,则使用 v-show 较好
  • 如果需要运行时条件很少改变,则使用 v-if 较好

13-1. 条件渲染指令

条件渲染指令用来辅助开发者按需控制DOM的显示与隐藏。条件渲染指令由如下两个:分别是

  • v-if
  • v-show 示例用法如下:
<div id="app">
   <p v-if="networkState === 200">请求成功 --- 被 v-if 控制</p>
   <p v-show="networkState === 200">请求成功 --- 被 v-show 控制</p>
</div>

13-2. v-else

V-if 可以单独使用,或配合 v-else 指令一起使用:

<div v-if="Math.random() > 0.5">
   随机数大于0.5
</div>
<div v-else>
   随机数小于或等于 0.5
</div>
  • 注意:v-else 指令必须配合 v-if 指令一起使用,否则它将不会被识别!

13-3. v-else-if

v-else-if 指令,顾名思义,充当 v-if 的 "else-if块",可以连续使用:

<div v-if="type === 'A'">优秀</div>
<div v-else-if="type === 'B'">良好</div>
<div v-else-if="type === 'C'">一般</div>
<div v-else></div>
  • 注意:v-else-if 指令必须配合 v-if 指令一起使用,否则它将不会被识别!

13-4. 列表渲染指令

VUE 提供了v-for列表渲染指令,用来辅助开发者基于一个数组来循环渲染一个列表结构。v-for指令需要使用item in items 形式的特殊语法,其中:

  • items 是 待循环的数组
  • item 是 被循环的每一项
data:{
   list:[
      // 列表数据
      {id:1,name:'张三'},
      {id:2,name:'李四'}
   ]
}

<ul>
   <li v-for="item in list">姓名是:{{item.name}}</li>
</ul>

13-5. v-for 中的索引

v-for 指令还支持一个 可选的第二个参