前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 中 v-if 和 v-show 有什么区别?

Vue 中 v-if 和 v-show 有什么区别?

作者头像
前端西瓜哥
发布2022-08-18 08:52:18
9590
发布2022-08-18 08:52:18
举报

大家好,我是前端西瓜哥。今天来学习下 Vue 中 v-if 和 v-show 的区别。

v-if

v-if 是条件渲染,表示一个元素能否渲染出来。

如果为真,元素就会挂载并显示出来。

如果为假,元素会被销毁,并在 DOM 树上留下一个 HTML 注释。

v-if 适合用来做组件的懒加载。

如果组件的创建非常消耗资源,且不会立即使用,在特定条件下才会出现(比如级联选择器),可以考虑通过 v-if 设置为 false,先不进行加载。

频繁地使用 v-if 切换 true 和 false,会导致组件的频繁地销毁和重建,这时候或许考虑使用 v-show。

v-if 可以搭配 v-if-else、v-else 这些指令,实现一些较为复杂的逻辑。

v-show

v-show,其实就是给根节点加上或移除 display: none; 属性。

因为这种显示隐藏元素的方式使用得比较多,所以 Vue 官方把它做成了内置指令。

display: none; 的特性是将元素隐藏,且在 DOM 树中不占据空间大小,会导致其下方的元素往上跑。

和 v-if 不同的是,v-show 不会导致组件的销毁,组件还是在那里,不会因为销毁导致内部状态(比如滚动高度)丢失。

v-show 没有惰性加载的能力。

有时候,我们可能希望将元素隐藏,但让它仍旧占据空间。这时候我们可以使用 visibility: hidden;

这个 Vue 倒是没提供内置指令,我们需要用 style 自行实现:

代码语言:javascript
复制
<HelloWorld
  :style="{
    visibility: visible ? 'hidden' : '',
  }"
  msg="Hello Vue 3 in CodeSandbox!"
/>

结尾

总的来说,v-if 可以控制组件的销毁和重建,可以实现惰性加载;v-show 则是 display: none; 的语法糖,只是加个样式而已。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端西瓜哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • v-if
  • v-show
  • 结尾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档