我有以下路由和requireAuth实现。我有两个问题。
1。)当我没有登录时,我没有被重定向到/登录。
2。)当我尝试访问/并且我已登录时,Home组件未呈现。
在任何用例中都没有出现控制台错误。我已经确认IsLoggedIn()在预期的时间返回预期值。所以我的requireAuth实现可能会归咎于此。我做错了什么?
index.js
import { isLoggedIn } from './auth';
function requireAuth(nextState, replace, callback) {
if (!isLoggedIn()) {
replace('/login');
}
}
render(
<Provider store={store}>
<Router history={hashHistory}>
<Route path="/" component={Home} onEnter={requireAuth} />
<Route path="/login" component={Login} />
</Router>
</Provider>, document.getElementById('root')
);
auth.js
module.exports = {
isLoggedIn() {
return localStorage.token != undefined;
}
};
答案 0 :(得分:4)
If callback is listed as a 3th argument, this hook will run asynchronously, and the transition will block until callback is called.在您的情况下,不需要回调,您可以安全地省略它(因为isLoggedIn
是同步的)