我有以下路线和requireAuth实现。我有两个问题。


  1.)我没有登录时,没有从/重定向到/ login。
  
  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')
);


验证码

module.exports = {
    isLoggedIn() {
        return localStorage.token != undefined;
    }
};

最佳答案

If callback is listed as a 3th argument, this hook will run asynchronously, and the transition will block until callback is called.在您的情况下,不需要回调,因此您可以安全地省略它(因为isLoggedIn是同步的)

关于javascript - react 路由器requireAuth不重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39336883/

10-09 15:11