React setTimeout 立即发生,而不是 3 秒后
React setTimeout takes place immediately not after 3 seconds
我会尝试再解释一次这个问题(已解决)作为练习 post 在 Whosebug 上写作。我想在我的网站上正确登录后,显示用户已正确登录的文本,并且3 秒后重定向到带有 posts.My 代码的页面立即重定向。我的旧代码的重要事项:
const Register = () => {
...
const goLoginPage = () => {
return <div>setTimeout(() => {<Redirect to="/" />}, 3000);</div>;
};
...
return(
{isError == false && (
<div>
<p className="successMessage">Logged in</p>
{goLoginPage()}
</div>
)}
)
我希望我的 post 现在好多了。真诚的
一种可能的解决方案是使用状态,它会告诉渲染方法它是否应该渲染重定向组件。
示例:
const YourComponent = () => {
...
const [timeToRedirect, setTimeToRedirect] = useState(false);
useEffect(() => {
setTimeout(() => setTimeToRedirect(true), 3000)
}, []);
return (
<div>
...
{timeToRedirect && <Redirect to="/" />
</div>
)
}
你可以像这样初始化状态
state = {
delyaRedirect: false
}
setTimeout(() => {
this.setState({ delyaRedirect: true })
}, 3000);
并使用条件渲染
{this.state.delyaRedirect && <Redirect to={'/'} />}
我会尝试再解释一次这个问题(已解决)作为练习 post 在 Whosebug 上写作。我想在我的网站上正确登录后,显示用户已正确登录的文本,并且3 秒后重定向到带有 posts.My 代码的页面立即重定向。我的旧代码的重要事项:
const Register = () => {
...
const goLoginPage = () => {
return <div>setTimeout(() => {<Redirect to="/" />}, 3000);</div>;
};
...
return(
{isError == false && (
<div>
<p className="successMessage">Logged in</p>
{goLoginPage()}
</div>
)}
)
我希望我的 post 现在好多了。真诚的
一种可能的解决方案是使用状态,它会告诉渲染方法它是否应该渲染重定向组件。
示例:
const YourComponent = () => {
...
const [timeToRedirect, setTimeToRedirect] = useState(false);
useEffect(() => {
setTimeout(() => setTimeToRedirect(true), 3000)
}, []);
return (
<div>
...
{timeToRedirect && <Redirect to="/" />
</div>
)
}
你可以像这样初始化状态
state = {
delyaRedirect: false
}
setTimeout(() => {
this.setState({ delyaRedirect: true })
}, 3000);
并使用条件渲染
{this.state.delyaRedirect && <Redirect to={'/'} />}