我在我的项目中使用Framework7和Vue,在一些非常基本的东西上遇到了麻烦。在我的f7路由中,我希望在/
路由上有一个守卫,它检查用户是否登录,然后重定向到/home/
,否则重定向到/login/
的登录屏幕。但在当前的设置下,重定向不起作用。你知道为什么吗?
routes.js
const routes = [
{
path: '/',
async: function (routeTo, routeFrom, resolve, reject) {
if (isUserLoggedIn()) {
console.log(`*** redirecting to /home/`);
resolve({redirect: '/home/'});
} else {
console.log(`*** redirecting to /login/`);
resolve({redirect: '/login/'});
}
},
},
{
path: '/login/',
loginScreen: Login,
on: {
pageBeforeIn: function (event, page) {
console.log(`*** /login/ onBeforeIN`);
// never called
}
}
},
{
path: '/home/',
component: HomePage,
on: {
pageBeforeIn: function (event, page) {
console.log(`*** /home/ onBeforeIN`);
// never called
}
}
}
];
发布于 2020-10-28 07:50:02
由弗拉德本人在F7论坛here上回答
async
不支持重定向,需要使用route的beforeEnter (https://framework7.io/docs/routes.html#route-before-enter-leave 1):
beforeEnter(to, from, resolve, reject) {
const router = this;
if (/* need redirect */) {
reject();
router.navigate('/another-path/');
return;
}
resolve();
}
除此之外,我问题是在登录路径中使用loginScreen: Login,
而不是component: Login,
。
进行这两个更改确实解决了问题。
https://stackoverflow.com/questions/64477541
复制