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