vue路由跳转不触发mounted方法

将mounted(){},换成activated(){}方法
activated:进入当前存在activated()函数的页面时,一进入页面就触发;可触发多次
mounted:只触发一次

Vue.js 中的路由跳转是通过 Vue Router 实现的,它允许你以声明式的方式创建单页面应用(SPA)。`mounted` 是 Vue 的生命周期钩子之一,它在组件被挂载到 DOM 后立即被调用。然而,在使用 Vue Router 进行路由跳转时,`mounted` 钩子并不总是会被触发。这是因为在 SPA 中,页面内容的切换通常是通过改变视图组件来完成的,而不是重新挂载整个应用。 当组件被复用时,Vue 可能会跳过创建和挂载阶段,因此 `mounted` 钩子就不会被再次触发。如果需要在路由跳转后执行某些操作,可以使用 Vue Router 提供的导航守卫(Navigation Guards)来处理。 Vue Router 提供了几种导航守卫: 1. 全局前置守卫 `beforeEach` 和 `beforeResolve`:在导航被确认之前,会调用这些守卫函数。 2. 全局后置钩子 `afterEach`:在导航确认之后会被调用,但是这些钩子没有“访问权”,不能改变导航本身。 3. 路由独享守卫 `beforeEnter`:只在进入特定路由触发。 4. 组件内守卫:`beforeRouteEnter`、`beforeRouteUpdate` 和 `beforeRouteLeave`,分别在进入路由路由复用时和离开路由触发。 如果你需要在路由跳转后执行类似 `mounted` 的逻辑,你应该考虑使用这些导航守卫。特别是 `beforeRouteEnter` 钩子,因为它不能访问 `this`(因为守卫在解析路由前被调用,因此组件实例还没有被创建),你可能需要通过传递回调给 `next` 函数来访问组件实例。 ```javascript beforeRouteEnter(to, from, next) { next(vm => { // 通过 `vm` 访问组件实例 }); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值