在发布这个问题之前,我到处寻找,但我找不到任何东西!!!
所以我希望我的react应用程序中的某些路由等待Promise被解析,以便我可以检查用户角色,如果该用户可以访问特定路由。
我尝试了下面的代码,但它不起作用!
checkRoles = (nextState, replace) => {
if(token && !loggedUser) {
this.getUserData()
.then(() => {
alert('you are logged in.');
replace('/dashboard');
})
.catch(() => {
alert('session expired.');
replace('/login');
});
} else {
alert('Please login first.');
replace('frontend/login');
}
}
在catch
和then
函数中完全忽略了替换,我也尝试传递第三个arg callback()
,它也不起作用!
答案 0 :(得分:0)
您必须使用onEnter函数的第3个参数:
checkRoles = (nextState, replace, cb) => {
if (token && !loggedUser) {
this.getUserData()
.then(() => {
alert('you are logged in.');
replace('/dashboard');
cb();
})
.catch(() => {
alert('session expired.');
replace('/login');
cb();
});
} else {
alert('Please login first.');
replace('frontend/login');
cb();
}
};