Vue Router - 如何在路由之间传递查询参数

The*_*rch 5 vue.js vue-router

我有以下场景...

当用户访问该路线时/intended/page,他们会被重定向到另一条路线,例如/foo/page?next=/intended/page。我添加一个查询参数next=/intended/page来保留原始路线。从重定向路线,用户浏览一系列其他页面/组件,然后说/bar/page/baz/page最后我想将它们带到原始路线。问题是如何通过 bar 和 baz 路线。我想我可以将查询参数存储在 Vuex 中,但也许使用 vue router 有一种更简单的方法。我尝试在全局警卫中这样做

router.beforeEach((to, from, next) => {
    if (from.query.next) next({path: to.path, query: {next: from.query.next}});
    else next();
});
Run Code Online (Sandbox Code Playgroud)

但我最终陷入了无限循环。有任何想法吗?

小智 0

如果你想在运行时编辑查询字符串参数,在每个路由之前,你只需要编辑你的to.query对象:

例子:

to.query.site = 'mysite';
Run Code Online (Sandbox Code Playgroud)

进而:

next({path: to.path, query: to.query})
Run Code Online (Sandbox Code Playgroud)

如果您的网址是:/#/?name=Gianni 它将重定向到:/#/?name=Gianni&site=mysite