next.js useEffect在生产中运行两次吗?

hrirmatl  于 2023-01-08  发布在  其他
关注(0)|答案(1)|浏览(477)

这个问题非常直接。我知道它应该在开发中运行两次以更快地识别bug。但我问自己,当我部署NextJS应用程序时,是否需要配置一些东西,以便它不会在生产中发生。
这是我遇到的问题。所以我花了一些时间停止编程,因为Uni。现在我试图在渲染后立即在useEffect中获取一些数据,但无法使其正常工作。
我可以简单地说:

useEffect(() => {
        fetch(`/api/collection/getCollections`)
.then(res => res.json())
.then(data => setData(data.collections))
.catch(error => console.log(error));
    }, [])

或者是这样的:

useEffect(() => {
    const getData = async () => {
        await fetch(`/api/collection/getCollections`).then(res => res.json()).then(data => setData(data.collections)).catch(error => console.log(error));
    }
    getData();
}, [])

这基本上是一样的,但都运行了两次,我得到了两个API调用
先谢谢你!

368yc8dk

368yc8dk1#

checkout next.config.js文件并使reactStrictMode等于false,然后重新启动节点服务器。这就是为什么您的API被调用两次的原因。
React的Strict Mode是一个开发模式特有的特性,用于突出显示应用程序中的潜在问题。它有助于识别不安全的生命周期、遗留API使用和许多其他特性(参见here)。

  • 因此,是的,它仅适用于开发模式。*

相关问题