gpt4 book ai didi

javascript - React hook 在组件挂载上重定向

转载 作者:行者123 更新时间:2023-11-30 19:20:40 28 4
gpt4 key购买 nike

我正在尝试在成功登录后管理 session ,同时重定向到表单提交上的某个页面。

我通常会在类组件中这样做:

componentDidMount() {
if (context.token) {
return <Redirect to="/" />
}
}

但是我想使用 React hooks,因此;以下代码不会重定向到任何地方:

import React, { useEffect } from "react";
import ReactDOM from "react-dom";
import { BrowserRouter, Switch, Route, Redirect, Link } from "react-router-dom";
es6
const HomePage = props => (
<div>
<h1>Home</h1>
</div>
);

const AboutUsPage = props => {
useEffect(() => {
redirectTo();
}, []);
return (
<div>
<h1>About us</h1>
</div>
);
};

function redirectTo() {
return <Redirect to="/" />;
}

function App() {
return (
<div className="App">
<BrowserRouter>
<nav>
<Link to="/">Home</Link>
<Link to="/us">About us</Link>
</nav>
<Switch>
<Route exact path="/" component={HomePage} />
<Route exact path="/us" component={AboutUsPage} />
</Switch>
</BrowserRouter>
</div>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

工作沙箱:https://codesandbox.io/s/blue-river-6dvyv?fontsize=14

我读到如果钩子(Hook) useEffect() 返回一个函数,它只会在组件卸载时起作用。但是它应该在挂载组件时重定向。

有什么建议吗?提前致谢。

最佳答案

您可以在状态上设置 redirect 变量,并基于它在渲染中重定向:

const AboutUsPage = props => {
const [redirect, setRedirect] = useState(false);

useEffect(() => {
setRedirect(true); // Probably need to set redirect based on some condition
}, []);

if (redirect) return redirectTo();
return (
<div>
<h1>About us</h1>
</div>
);
};

关于javascript - React hook 在组件挂载上重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com