当前位置:首页 > VUE

vue router 实现onshow

2026-01-14 05:53:07VUE

实现 Vue Router 的 onShow 功能

Vue Router 本身没有直接提供 onShow 生命周期钩子,但可以通过以下几种方式模拟类似的功能。

使用 watch 监听路由变化

在组件中使用 watch 监听 $route 对象的变化,当路由变化时触发相应的逻辑。

watch: {
  '$route'(to, from) {
    if (to.path === '/your-path') {
      // 相当于 onShow 的逻辑
      console.log('组件显示');
    }
  }
}

使用导航守卫

在全局或组件内使用导航守卫,在路由进入时执行特定逻辑。

beforeRouteEnter(to, from, next) {
  next(vm => {
    // 相当于 onShow 的逻辑
    console.log('组件显示');
  });
}

使用 activated 生命周期钩子

如果组件被 <keep-alive> 缓存,可以使用 activated 钩子模拟 onShow 行为。

activated() {
  // 相当于 onShow 的逻辑
  console.log('组件显示');
}

结合 Vue 自定义事件

在父组件中监听路由变化,通过自定义事件通知子组件。

vue router 实现onshow

// 父组件
watch: {
  '$route'(to, from) {
    if (to.path === '/your-path') {
      this.$refs.child.handleShow();
    }
  }
}

// 子组件
methods: {
  handleShow() {
    // 相当于 onShow 的逻辑
    console.log('组件显示');
  }
}

注意事项

  • 如果组件未被 <keep-alive> 缓存,activated 钩子不会触发。
  • 使用 watch 监听路由时,确保逻辑不会在不需要的时候执行。
  • 导航守卫适用于全局或组件级别的控制,灵活性较高。

标签: vuerouter
分享给朋友:

相关文章

vue实现文字播放栏

vue实现文字播放栏

Vue 实现文字播放栏(跑马灯效果) 方法一:使用 CSS 动画 + Vue 数据绑定 通过 CSS 的 @keyframes 实现动画效果,结合 Vue 的动态数据绑定控制内容。 <tem…

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件可…

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-co…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue ref实现

vue ref实现

Vue 中 ref 的实现 在 Vue 中,ref 是一个用于创建响应式引用的 API,适用于基本类型和对象。以下是 ref 的核心实现原理和使用方法。 基本实现原理 ref 通过 Reactive…