useEffect 中的推送历史导致其他路由中的重定向
push history in useEffect causes redirect in other routes
我的页面中有这个钩子:
useEffect(() => {
if (props.messages.msg !== "No token,authorization denied") {
props.clearMsg();
setInterval(() => {
props.history.push("/");
}, 2500);
}
}, [props.messages.msg, props.history]);
基本上当我从 redux 得到服务器的响应时,我会在 2.5 秒后重定向到我的根页面,
它工作得很好,问题是当我在我的根页面并且我尝试去不同的路线时,我被重定向回根,好像 useEffect 运行s 再次,我试图控制台记录它,它似乎不再 运行,所以我不知道为什么会这样,有什么想法吗?
这不是 运行 不止一次的效果,而是 setInterval
每 2.5 秒 运行 一次。当您的组件卸载时使用 clearInterval
以防止它再次 运行ning。这是 clearInterval.
上的文档
我相信你在这里的意思是 setTimeout
,它只会调用一次回调:
useEffect(() => {
if (props.messages.msg !== "No token,authorization denied") {
props.clearMsg();
setTimeout(() => {
props.history.push("/");
}, 2500);
}
}, [props.messages.msg, props.history]);
我的页面中有这个钩子:
useEffect(() => {
if (props.messages.msg !== "No token,authorization denied") {
props.clearMsg();
setInterval(() => {
props.history.push("/");
}, 2500);
}
}, [props.messages.msg, props.history]);
基本上当我从 redux 得到服务器的响应时,我会在 2.5 秒后重定向到我的根页面, 它工作得很好,问题是当我在我的根页面并且我尝试去不同的路线时,我被重定向回根,好像 useEffect 运行s 再次,我试图控制台记录它,它似乎不再 运行,所以我不知道为什么会这样,有什么想法吗?
这不是 运行 不止一次的效果,而是 setInterval
每 2.5 秒 运行 一次。当您的组件卸载时使用 clearInterval
以防止它再次 运行ning。这是 clearInterval.
我相信你在这里的意思是 setTimeout
,它只会调用一次回调:
useEffect(() => {
if (props.messages.msg !== "No token,authorization denied") {
props.clearMsg();
setTimeout(() => {
props.history.push("/");
}, 2500);
}
}, [props.messages.msg, props.history]);