useEffect 在 Nextjs Typescript 应用程序中被调用两次

cor*_*ese 13 javascript frontend reactjs next.js

我有一个简单的 useEffect 函数设置,带有括号,如下所示:

  useEffect(() => {
    console.log('hello')
    getTransactions()
  }, [])
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的应用程序时,它会在控制台中打印两个hello。知道为什么吗?

即使我添加这样的内容,仍然会打印两个hello。

  const [useEffectCalled, setUseEffectCalled] = useState<Boolean>(false)

  useEffect(() => {
    console.log('hello')
    if (!useEffectCalled) {
      getTransactions()
    }
    setUseEffectCalled(true)
  }, [])
Run Code Online (Sandbox Code Playgroud)

cor*_*ese 56

感谢 Joel Hager,我能够通过编辑来使其next.config.js 工作

const nextConfig = {
  reactStrictMode: false,
};
Run Code Online (Sandbox Code Playgroud)

并重新启动我的应用程序。

  • 我还重复执行了 useEffect 并禁用它也对我有用,但我讨厌不知道为什么。ReactStrictMode 应该有助于突出潜在的问题,而不是制造它们。有谁明白为什么会发生这种情况?我正在使用下一个 v12.1.6 + React v18.1.0 (4认同)
  • 您也不应该忘记重新启动服务器。`next.config.js` 在服务器启动时应用。 (2认同)