React Router requireAuth不重定向

时间:2016-09-05 19:51:41

标签: javascript reactjs react-router

我有以下路由和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;
    }
};

1 个答案:

答案 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是同步的)