这两天做项目的时候,碰到产品提的一个需求,每次进到首页都要刷新,但是需要根据上一页路由的path的地址对首页里的内容进行不同的操作。

实现方式并不复杂,主要是利用 beforeRouteEnter 这个钩子中的from参数获得之前url的信息,然后给 next 传递回调来访问当前组件的实例,至于为什么不直接利用 this 访问组件实例,是因为beforeRouteEnter 守卫不能访问 this(beforeRouteEnter 守卫在导航确认前被调用,因此即将登场的新组件还没被创建)。

核心代码:

data(){
  return {
    fromPath:''
  }
},
beforeRouteEnter (to, from, next){
  next(vm => {
    // 通过 `vm` 访问组件实例,将值传入fromPath
    vm.fromPath = from.path
  })
},
mounted(){
  this.$nextTick(()=>{
    // 验证是否获取到了上页的url
    /* eslint-disable no-console */
    console.log(this.fromPath)
  })
}

本人前端程序员,长期混迹于各种前端开发中,现在专门为前端热爱者建了个微信群,和大家一起分享自己在工作、学习中遇到的技术知识或问题,还有各种资料和课程,各位感兴趣的可以加入哦~ 

微信前端交流群

 

Logo

前往低代码交流专区

更多推荐