javascript - 下一个js : useEffect only once (if I use Link component)

标签 javascript reactjs next.js

我使用 Link 组件打开页面而无需重新加载:

<Link href="/home"><a>Home</a></Link>
<Link href="/page"><a>Page</a></Link>

这个在我家:

const loadedRef = useRef(false)
useEffect(() => {
    if(!loadedRef.current){
        console.log("run")
        loadedRef.current = true;
    }
}, []);

首次加载时效果很好。

如果我点击page并点击homeuseEffect会再次运行!

我只想加载一次 useEffect 甚至单击其他页面并返回主页

最佳答案

useRef 为 home 组件的这个特定实例创建一个值。如果实例卸载,那么该值就会消失。如果您想创建一个即使在组件卸载后仍然保留的全局变量,请执行以下操作:

import React, { useEffect } from 'react';

// Deliberately making this *outside* the component
let loaded = false;

const Home = () => {
  useEffect(() => {
    loaded = true;
  }, []);

  // ...
}

export default Home;

关于javascript - 下一个js : useEffect only once (if I use Link component),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71158596/

相关文章:

reactjs - 如何测试无状态组件

reactjs - React 不包含 HTMLButtonElement 类型的 'disabled' 属性

javascript - 无法将状态数组值传递给 DOM

javascript - Next.js 错误 : Hydration failed because the initial UI does not match what was rendered on the server

javascript - 我有六个 react 文件,每个文件导出一个数组,我想将六个文件减少到一个

javascript - 如何通过双击加载而不是单击放大弹出窗口

javascript - 改变时,划掉表格

Javascript 语法 - If 语句和函数调用

reactjs - NextJS 13.4 应用程序路由器中间件页面重定向没有样式

javascript - 如何解决跨页面泄漏的scss样式?