当前位置:首页 > VUE

vue 如何实现onshow

2026-02-17 23:40:31VUE

Vue 中实现类似 onShow 的生命周期

在 Vue 中没有直接的 onShow 生命周期钩子,但可以通过以下方法模拟类似功能:

使用 activated 钩子(配合 keep-alive)

当组件被 <keep-alive> 缓存时,可以使用 activated 钩子作为 onShow 的替代方案:

export default {
  activated() {
    // 当组件被激活时触发(相当于 onShow)
    console.log('组件显示')
  },
  deactivated() {
    // 当组件被停用时触发(相当于 onHide)
    console.log('组件隐藏')
  }
}

通过路由变化监听

对于页面级组件,可以通过监听路由变化来实现:

export default {
  watch: {
    '$route'(to, from) {
      if (to.matched.some(record => record.path === this.$route.path)) {
        // 当前路由被激活时触发
        console.log('页面显示')
      }
    }
  }
}

使用 visibilitychange 事件

监听浏览器标签页的可见性变化:

export default {
  mounted() {
    document.addEventListener('visibilitychange', this.handleVisibilityChange)
  },
  beforeDestroy() {
    document.removeEventListener('visibilitychange', this.handleVisibilityChange)
  },
  methods: {
    handleVisibilityChange() {
      if (document.visibilityState === 'visible') {
        console.log('页面可见')
      } else {
        console.log('页面隐藏')
      }
    }
  }
}

自定义指令实现

创建自定义指令来实现 onShow 功能:

Vue.directive('on-show', {
  bind(el, binding) {
    const observer = new IntersectionObserver((entries) => {
      if (entries[0].isIntersecting) {
        binding.value()
      }
    })
    observer.observe(el)
  }
})

使用方式:

vue 如何实现onshow

<div v-on-show="handleShow">内容</div>

这些方法可以根据具体场景选择使用,keep-alive 的 activated 适用于组件缓存场景,路由监听适用于页面级组件,visibilitychange 适用于浏览器标签页切换场景,自定义指令适用于元素可见性检测场景。

标签: 如何实现vue
分享给朋友:

相关文章

vue实现动态禁用

vue实现动态禁用

动态禁用表单元素或按钮 在Vue中实现动态禁用功能通常通过v-bind:disabled(或简写为:disabled)绑定一个响应式变量实现。当变量值为true时,元素被禁用;为false时启用。…

vue怎么实现加减

vue怎么实现加减

Vue实现加减功能的方法 使用v-model绑定数据 在Vue中可以通过v-model双向绑定数据,结合methods方法实现加减功能。定义一个数字变量,通过按钮触发增减方法。 <templa…

vue实现拖拽div

vue实现拖拽div

Vue 实现拖拽 Div 的方法 使用原生 HTML5 拖拽 API HTML5 提供了原生的拖拽 API,结合 Vue 的事件绑定可以快速实现拖拽功能。以下是实现步骤: <template&…

设计与实现vue

设计与实现vue

Vue 设计与实现概述 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心设计理念包括响应式数据绑定、组件化开发和虚拟 DOM 渲染。以下是 Vue 设计与实现的关键点。 核…

vue实现atm

vue实现atm

Vue实现ATM机功能 使用Vue实现一个简单的ATM机功能需要模拟存款、取款、查询余额等操作。以下是一个基于Vue 3的实现方案: 核心功能设计 创建Vue组件模拟ATM机界面,包含以下功能:…

vue 设计与实现

vue 设计与实现

Vue 设计与实现概述 Vue.js 是一个渐进式 JavaScript 框架,其核心设计围绕响应式系统、虚拟 DOM 和组件化展开。以下从核心机制、设计思想和实现细节三方面分析。 响应式系统 Vu…