vue-router怎么获取历史记录上一步的url呢?

同问:vue-router怎么获取历史记录上一步的url呢?

阅读 54.6k
5 个回答

路由信息对象

router.beforeEach((to, from, next) => {
  // to 和 from 都是 路由信息对象
  
  // 这里的from.path就是上一步的url的hash值
})

如果一个页面是一个组件,在组件里:在导航完成前获取数据

beforeRouteEnter (to, from, next) {
  // 在导航完成前获取数据
}

在this.$router里有所有访问记录

之前碰到过这个问题,网上找了好久,说出于安全问题浏览器不提供上一个历史记录的接口的。找到的下面的这个代码,作者说是可以用,据说是获取上一个页面的URL的,但是我看不懂,希望有大神能指导一下。
export default {

mixins: [],
vuex: {
  actions: {fetchCertificates},
},
data() {
  return {}
},
route: {
  data() {
    this.$root.showLoading();
    return this.fetchCertificates().then((res) => {
      this.$root.dismissLoading();
      if (res.error) return this.$root.toastError(res.error);
      if(res.data.certificates.length >0){
        return res.data;
      }else{
        console.log(this.$route ,"----当前页面的url信息----");
      }
    });
  },
  canActivate (transition) {
    console.log(transition,"======上一个页面的url信息=======");
    transition.next();
  }
},

}

试过了,不能用

获取vue-router的上一个页面是否存在或者是否是自己需要返回的地址,可以使用vue-router的的声明周期函数,有三种模式:
第一种、使用全局函数beforeEach,直接来获取form.path(即为对应的上一次地址的路由path内容);

 beforeEach(to, from, next) {
    path = from.path //path为定义的变量,不是vue的data定义的变量,当前生命周期data还未初始化
    next()
}

第二种、使用组内共享函数beforeEnter,直接来获取form.path(即为对应的上一次地址的路由path内容);

 beforeEnter(to, from, next) {
    path = from.path //path为定义的变量,不是vue的data定义的变量,当前生命周期data还未初始化
    next()
}

第三种、使用组件内函数,beforeRouteEnter,,直接来获取form.path(即为对应的上一次地址的路由path内容);

beforeRouteEnter(to, from, next) {
    path = from.path //path为定义的变量,不是vue的data定义的变量,当前生命周期data还未初始化
    next()
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题