v-show通过绑定布尔值控制元素display样式,元素始终保留在dom中;true时显示,false时添加display: none;不支持v-else,适用于频繁切换场景。

v-show 在 Vue 3 模板中直接通过绑定布尔值控制元素的 display 样式,元素始终保留在 DOM 中,只切换 display: none 或恢复原有显示值(如 block、inline 等)。
基本写法与触发逻辑
v-show 接收一个表达式,结果会被自动转为布尔值:
- 表达式为 true → 元素正常显示(移除
style="display: none") - 表达式为 false → Vue 自动添加
style="display: none" - 不支持
v-else或v-else-if,仅用于单个元素的显隐控制
常见使用方式
推荐把条件变量定义在响应式数据中,便于动态更新:
- 使用
ref:<div v-show="isVisible">内容</div>,配合const isVisible = ref(true) - 使用
computed:v-show="user.age >= 18",适合带逻辑判断的场景 - 组合多个条件:
v-show="isActive && !isDisabled",支持常规 JS 表达式
和 v-if 的关键区别
理解差异能帮你选对指令:
- v-show:元素一直存在 DOM 中,仅切 CSS;适合频繁切换(如开关面板、加载遮罩)
- v-if:条件为假时完全不渲染,DOM 中无该节点;适合一次性判断或条件极少变化(如权限按钮、错误提示)
- 注意:v-show 不支持在
<template></template>上使用,而 v-if 可以
注意事项
实际开发中容易忽略的细节:
- 初始值建议明确赋值(如
ref(false)),避免 undefined 导致意外显示 - 如果元素本身有内联
display样式,v-show 会覆盖它;但不会影响其他样式属性 - 子组件在 v-show 下仍会完整挂载、运行生命周期,只是视觉隐藏
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










