Vue中的v-if与v-show有什么区别 分别在什么时候使用

简介: Vue中的v-if与v-show有什么区别 分别在什么时候使用

v-if 和 v-show 用于控制元素显示或隐藏。

当 v-if 的条件为 false 时,元素会从页面中删除。当条件为 true 时,元素正常显示。

当 v-show 的条件为 false 时,会添加一个行内样式 display:none 将元素隐藏。当条件为 true 时,元素正常显示。

注意:使用 v-if 时,元素可能无法获取到。而使用 v-show 时,元素一定可以获取到。

条件渲染 v-show

当 v-show 的条件为 true 时,元素正常显示。

<div id="APP">
  <p v-show="true">条件渲染</p>
</div>

当 v-show 的条件为 false 时,会添加一个行内样式 display:none 将该元素隐藏。

<div id="APP">
  <p v-show="false">条件渲染</p>
</div>

当 v-show 的值为表达式时,会先将计算结果转换为 true 或 false,再进行显示或隐藏

<div id="APP">
  <p v-show="1 == 5">条件渲染</p>
</div>

可以在 data 中创建变量,通过动态改变 v-show 的值,使该元素显示或隐藏。

<div id="APP">
  <button @click="toggleShow">切换显示状态</button>
  <p v-show="status">条件渲染</p>
</div>
const vm = new Vue({
  el: "#APP",
  data(){
    return {
      status:true
    }
  },
  methods:{
    toggleShow(){
      this.status = !this.status;
    }
  }
});

:v-show 适用于切换频率较高的场景,因为 v-show 只是给元素添加样式实现显示隐藏的,并未删除这个元素。

条件渲染 v-if:

当 v-if 的条件为 true 时,元素正常显示。

<div id="APP">
  <p v-if="true">条件渲染</p>
</div>

 

当 v-if 的条件为 false 时,会将该元素在 DOM 中删除。

<div id="APP">
  <p v-if="false">条件渲染</p>
</div>

 

当 v-if 的值为表达式时,也会先将计算结果转换为 true 或 false,再判断是否删除该元素。

<div id="APP">
  <p v-if="1 === 2">条件渲染</p>
</div>

也可以在 data 中创建变量,通过动态改变 v-if 的值,使该元素创建或删除。

<div id="APP">
  <button @click="toggleIf">切换显示状态</button>
  <p v-if="status">条件渲染</p>
</div>
const vm = new Vue({
  el: "#APP",
  data(){
    return {
      status:true
    }
  },
  methods:{
    toggleIf(){
      this.status = !this.status;
    }
  }
});

:v-if 适用于切换频率较低的场景,因为 v-if 是通过删除元素或重新创建元素实现显示隐藏的,v-if 相比 v-show 的开销更大。

条件渲染 v-else 和 v-else-if:

<div id="APP">
  <h2>当前num的值是:{{num}}</h2>
  <button @click="add">点击num+1</button>
  <p v-if="num == 1">张三</p>
  <p v-else-if="num == 2">李四</p>
  <p v-else-if="num == 3">王五</p>
  <p v-else>你谁呀?</p>
</div>

:v-else 和 v-else-if 必须紧跟在 v-if 的后边,标签必须紧挨着不能被打断,如果被打断后边的 v-else 或 v-else-if 将不会生效。

const vm = new Vue({
  el: "#APP",
  data(){
    return {
      num:0
    }
  },
  methods:{
    add(){
      this.num++;
    }
  }
});

:使用 v-else-if 的优点就是,当 v-if 或 v-else-if 条件成立时,后边的 v-else-if 和 v-else 将不再执行,提高页面渲染效率。

:使用 v-else 的优点就是,当 v-if 和 v-else-if 的条件都不成立时,就会执行 v-else 渲染一个默认值。另外 v-else 不需要写执行条件。

在 template 模板上使用 v-if:

如果想同时切换多个元素的显示状态,可以使用 template 标签将这些元素包裹在一起,然后在 template 标签上使用 v-if 切换显示状态。

<div id="APP">
  <button @click="toggleIf">切换显示状态</button>
  <template v-if="status">
    <p>北京</p>
    <p>上海</p>
    <p>深圳</p>
  </template>
</div>
const vm = new Vue({
  el: "#APP",
  data(){
    return {
      status:true
    }
  },
  methods:{
    toggleIf(){
      this.status = !this.status;
    }
  }
});

:template 标签不会在页面中显示,更不会破坏页面结构。但是 template 标签只能配合 v-if 使用,不能使用 v-show .

原创作者:吴小糖

创作时间:2023.3.2

相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
28天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
32 1
vue学习第一章
|
28天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
|
28天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
28天前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
24 1
vue学习第7章(循环)
|
28天前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
29 1
vue学习第九章(v-model)
|
28天前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
39 1
vue学习第十章(组件开发)