如何重定向到 Framework7 路由器中的另一条路线?
How to redirect to another route in Framework7 router?
我在我的项目中使用 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
}
}
}
];
弗拉德在 F7 论坛上亲自回答 here:
async
不用于重定向,你需要使用路由的 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,
。
进行两项更改确实解决了问题。
我在我的项目中使用 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
}
}
}
];
弗拉德在 F7 论坛上亲自回答 here:
async
不用于重定向,你需要使用路由的 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,
。
进行两项更改确实解决了问题。