因此,类似于router.js
中的代码,位于https://github.com/erikras/react-redux-universal-hot-example/ master branch
const requireLogin = (nextState, replace, cb) => {
if(!isLoggedIn) {
store.dispatch(getUserInfo(somePayLoad)).then(checkLoginStatus);
}
function checkLoginStatus() {
const {authorization: { user }} = store.getState();
if(!user.typeA) {
replace('/home');
}
cb();
}
}
所以,当我replace()
时,如果if条件!user.typeA
失败,那么它会转到通常的被叫路由,访问上面代码中提取的用户详细信息,而且,我可以当用户想要退出时,我可以轻松调用logout
调度程序。但是,如果条件通过,它将替换为/home
页面并成功打开(重定向)到主页。但我无法在authorization
商店中获得用户详细信息。我也不能打电话给logout
调度员。
注意:
if(!user.typeA) {
const path = '/home';
const query = {error:'anything'};
const state = store.getState();
replace({ path, query, state });
}
而不是
if(!user.typeA) {
replace('/home')
}
也行不通。
如何实现这一目标?