ReactJS 在每次访问页面时仅在一次内使用 window.location.reload() 启动 useEffect

ReactJS fire up useEffect with window.location.reload() inside just one time on every page visit

这种业余的问题还请见谅
我有以下问题,我自己无法解决:
我正在做一个 cra-project,在这个项目中,我使用了来自 curtainjs 的持续扭曲的图像动画和滚动动画,以及 react-router-dom 用于我的路由。
当我切换到 About 页面并从那里返回时,图像不再可见,只是在重新加载之后,所以我的想法是每次返回时都重新加载该页面。我在一个简单的逻辑中使用了带有 window.location.reload() 的 useEffect-Hook。如果我理解正确,useEffect 会在每次渲染更改时运行。
所以我认为图像的连续动画可能存在问题,因为 useEffect 在连续循环中重复 - 即使挂钩末尾的数组在那里并且是空的。

所以至少我的问题是如何在我单击 返回 后仅启动一次 window.location.reload()在 About.js 中,即使由于主页上的图像动画 (App.js) 而存在任何类型的重新渲染。可能吗?

希望有人能帮帮我,谢谢!

App.js:

function App() {
  const [loading, setLoading] = useState(1);

  useEffect(() => {
    if (loading === 1) {
      window.location.reload();
      console.log('page is loading')
      setLoading(loading + 1);
    } else {
      console.log('page already loaded');
    }
  }, []);
  return (
    <>
        ...
    </>
  );
}

export default App;

尝试这样的事情。

function App() {
  const [loading, setLoading] = useState(false);

  useEffect(() => {
    if (loading) {
      window.location.reload();
    } else {
      console.log('page already loaded');
    }
  }, [loading]);
  return (
    <>
        ...
         <button type="button" onClick={() => setLoading(true)}>Refresh page</button>
        ...
    </>
  );
}

export default App;

该按钮只是一个示例,但您可以使用其他方式更改加载状态。

如果你不想使用 window.location.reload() 你可以试试这个:

function App() {
          const [loading, setLoading] = useState(false);
        
          useEffect(() => {
            if(loading) {
             setLoading(false)
}
        }, [loading]);
          return (
            <>
                {loading ? null : (
                 <>
...<button type="button" onClick={() => setLoading(true)}>Refresh page</button>...
                 <>
               )}
            </>
          );
        }
        
        export default App;