【问题标题】:How do I correctly implement a redirect?如何正确实现重定向?
【发布时间】:2021-06-30 05:37:22
【问题描述】:

我这样做是为了如果用户已经登录并且他试图进入登录页面,那么他会被重定向到主页。但是当注销时,重定向仅在页面刷新后发生(也登录时)。如何解决?

路线:

const isLoggedIn = localStorage.getItem("token");

return (
    <BrowserRouter>
        <Route path={'/'} component={Home} />
        <Route path={'/sign-in'} exact render={() => (isLoggedIn ? (<Redirect to="/" />) : (<SignIn />))} />
    </BrowserRouter>
);

退出:

const signOut = async () => {
        localStorage.removeItem('token')
        await axios.post('sign-out', {});
        setRedirect(true);
    }

    if (redirect) {
        return <Redirect to="/sign-in" />
    }

【问题讨论】:

  • 您可能希望将isLoggedIn 设置为某些组件状态的一部分,以便在用户注销并更新状态时触发重新渲染。

标签: reactjs


【解决方案1】:

尝试在您的组件中使用状态并根据您的登录状态设置状态。一旦状态更改,组件将自动重新渲染。 或者尝试使用全局状态,如 context 或 redux,这将简化您的流程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 2011-11-17
    • 1970-01-01
    • 2012-10-11
    • 2011-04-22
    • 2016-01-10
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多