基本上我的问题是,当使用beforeEach
或beforeRouteEnter
from
参数{name: null, meta: {…}, path: "/", hash: "", query: {…}, …}
等导航警卫时,当我尝试重定向到from
时,这是一个问题从那以后的一条路线,export default new Router({
routes: [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/dashboard',
name: 'Dashboard',
component: Dashboard,
children: [
{
path: 'profile',
name: 'Profile',
component: Profile
},
{
path: 'config',
name: 'Config',
component: Config
}
]
}
]
})
仍为空。
所以,我有这个路线定义:
router.beforeEach((to, from, next) => {
console.log(to)
console.log(from)
if (from.name !== 'Profile') {
next({ name: 'Profile' })
} else {
next()
}
})
我的前卫看起来像这样,在main.js或Dashboard.vue上(它只更改了警卫名称):
to
这会输出from
和{name: "Dashboard", meta: {…}, path: "/dashboard/", hash: "", query: {…}, …}
{name: null, meta: {…}, path: "/", hash: "", query: {…}, …}
{name: "Profile", meta: {…}, path: "/dashboard/profile", hash: "", query: {…}, …}
{name: null, meta: {…}, path: "/", hash: "", query: {…}, …}
{name: "Profile", meta: {…}, path: "/dashboard/profile", hash: "", query: {…}, …}
{name: null, meta: {…}, path: "/", hash: "", query: {…}, …}
的循环,如下所示:
from
它继续循环(null和“Profile”)元组,vue init webpack project
永远不会更改为“Profile”。
在我看来它并不像它应该以这种方式行事,因为我希望它在再次尝试防护之前重定向,不确定它是否是一个错误或预期的行为。
要重现我使用release()
的错误,然后按照上面的说明进行更新。