在Vue Router中,如何知道是否无法返回

qrjkbowd  于 2023-04-07  发布在  Vue.js
关注(0)|答案(3)|浏览(242)

我想写一个方法,链接到主页,如果我不能回去。
一段类似的代码:

if (**router.back.length == 0**){
         router.push({name:"Home"})
       }else {
         router.back();
       }
    }

问题是我不知道如何判断.back()是否可能。
我目前在一个页面NotFound,我转到当前页面使用以下重定向

path: "/:catchAll(.*)",
    name: "PageNotFound",
    component: () =>
      import(/* webpackChunkName: "NotFound" */ "@/views/PageNotFound.vue")
  }

谢谢你的帮助!

6ovsh4lw

6ovsh4lw1#

曾经有过类似的情况。尝试类似的代码(将其视为伪代码):

data: () => ({
     fromRoute: null
  }),
  beforeRouteEnter (to, from, next) {
    next(vm => {
      vm.fromRoute = from;
    })
  },
  methods: () {
    handleBack() {
      if (!this.fromRoute.name) {
        router.push({name:"Home"});
      } else {
        router.back();
      }
    }
  }

更多信息:https://forum.vuejs.org/t/how-to-go-back-or-go-home/30242/3

pxy2qtax

pxy2qtax2#

使用此代码实现所需的结果。确保您使用的是[Named Routes][1]

export default {
  data() {
    return {
      fromRoute: null
    };
  },
  beforeRouteEnter(to, from, next) {
    next((vm) => {
      vm.fromRoute = from;
    });
  },
  methods: {
    goBack() {
      if (!this.fromRoute.name) {
        this.$router.push("/");
      } else {
        this.$router.back();
      }
    },
  },
};

  [1]: https://router.vuejs.org/guide/essentials/named-routes.html
3b6akqbq

3b6akqbq3#

通过查看Vue Router文档,我找到了解决方案

goBack() {
      if(this.$router.getRoutes().length==0){
        this.$router.push({name:"Home"})
      }else{
        this.$router.back();
      }
    }

https://router.vuejs.org/api/#router-onready

相关问题