Vue v-show 指令

了解如何使用 v-show 使元素可见或不可见。

v-show 很容易使用,因为条件直接写在 HTML 标记属性中。


条件可见性

当条件为 false 时,v-show 指令通过将 CSS 的 display 属性值设置为 none 来隐藏元素。

在将 v-show 编写为 HTML 属性之后,我们必须给出一个条件来决定标记是否可见。

语法
  1. <div v-show="showDiv">This div tag can be hidden</div>

在上面的代码中,showDiv 表示布尔 Vue 数据属性,属性值为 truefalse。如果 showDiv 为 true,则显示 div 标记,如果为 false,则不显示标记。

实例

仅当 showDiv 属性设置为 true 时,才显示 div 元素。

  1. <div id="app">
  2. <div v-show="showDiv">This div tag can be hidden</div>
  3. </div>
  4. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  5. <script>
  6. const app = Vue.createApp({
  7. data() {
  8. return {
  9. showDiv: true
  10. }
  11. }
  12. })
  13. app.mount('#app')
  14. </script>

v-show 对比 v-if

v-showv-if 之间的区别在于,v-if 根据条件创建(渲染)元素,但对于 v-show,元素已经创建,v-show 只更改其可见性。

因此,在切换对象的可见性时最好使用 v-show,因为这对浏览器来说更容易做到,而且可以带来更快的响应和更好的用户体验。

v-show 上使用 v-if 的一个原因是 v-if 可以与 v-else-ifv-else 一起使用。

在下面的实例中,v-showv-if 分别用于两个不同的 <div> 元素,但基于相同的 Vue 属性。您可以打开实例并检查代码,查看 v-show 保留了 <div> 元素,并且只将 CSS display 属性设置为 none,但 v-if 实际上破坏了 <div> 元素。

实例

仅当 showDiv 属性设置为 true 时,才显示两个 <div> 元素。如果 showDiv 属性设置为 false,并且我们用浏览器检查示例页面,我们可以看到带有 v-If 的 <div> 元素被破坏,但带有 v-show 的 <div> 元素的 CSS 显示属性仅设置为 none

  1. <div id="app">
  2. <div v-show="showDiv">Div tag with v-show</div>
  3. <div v-if="showDiv">Div tag with v-if</div>
  4. </div>
  5. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  6. <script>
  7. const app = Vue.createApp({
  8. data() {
  9. return {
  10. showDiv: true
  11. }
  12. }
  13. })
  14. app.mount('#app')
  15. </script>