React路由器需要auth而不是重定向

React Router requireAuth not redirecting

本文关键字:重定向 auth 路由器 React      更新时间:2023-09-26

我有以下路由和要求auth实现。我有两个问题。

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')
);

auth.js

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

如果callback被列为第三个参数,这个钩子将异步运行,并且转换将阻塞直到callback被调用。在您的示例中,不需要回调,您可以安全地忽略它(因为isLoggedIn是同步的)