当前位置:首页 > VUE

vue 实现vshow

2026-01-13 06:24:26VUE

Vue 实现 v-show 指令

Vue 的 v-show 指令通过控制元素的 display CSS 属性来实现显示和隐藏。与 v-if 不同,v-show 不会移除 DOM 元素,而是通过样式切换。

基本用法

<template>
  <div>
    <button @click="toggleVisibility">Toggle Visibility</button>
    <div v-show="isVisible">This element is visible</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    };
  },
  methods: {
    toggleVisibility() {
      this.isVisible = !this.isVisible;
    }
  }
};
</script>

实现原理

v-show 的核心逻辑是根据表达式的值动态设置元素的 display 样式:

  • 当表达式为 true 时,元素显示(display 设置为原始值,如 blockinline 等)。
  • 当表达式为 false 时,元素隐藏(display: none)。

自定义 v-show

可以通过自定义指令实现类似 v-show 的功能:

<template>
  <div v-custom-show="isVisible">Custom v-show</div>
</template>

<script>
export default {
  directives: {
    'custom-show': {
      bind(el, binding) {
        el.style.display = binding.value ? '' : 'none';
      },
      update(el, binding) {
        el.style.display = binding.value ? '' : 'none';
      }
    }
  },
  data() {
    return {
      isVisible: true
    };
  }
};
</script>

与 v-if 的区别

  • v-show:仅切换 display 样式,DOM 元素始终保留。适合频繁切换的场景。
  • v-if:条件为 false 时会销毁 DOM 元素,条件为 true 时重新创建。适合不频繁切换的场景。

性能考虑

  • 频繁切换显示状态时,v-show 性能更好,因为避免了 DOM 的频繁销毁和重建。
  • 初始渲染成本较高时,v-if 更高效,因为可以跳过不必要的 DOM 渲染。

vue 实现vshow

标签: vuevshow
分享给朋友:

相关文章

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序 在 Vue 中实现冒泡排序,可以通过数据绑定和响应式特性动态展示排序过程。以下是一个完整的实现示例,包含代码和详细说明。 数据准备 在 Vue 的 data 中定义一个数组作为…

vue怎么实现选中删除

vue怎么实现选中删除

实现选中删除功能的方法 在Vue中实现选中删除功能通常涉及以下几个关键步骤: 数据绑定与选中状态管理 使用v-model或v-for指令绑定列表数据,结合复选框或单选按钮实现选中状态管理。例如:…

课程表vue实现

课程表vue实现

实现课程表的Vue组件 创建课程表需要设计数据结构、布局和交互逻辑。以下是一个基于Vue 3的实现方案: 数据结构设计 const timetableData = ref([ { ti…

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成列…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDia…