为什么 useEffect 运行两次?

Shu*_*u.T 13 reactjs react-hooks use-effect

import { useContext, useEffect, useState } from 'react';

const Log =  ()  =>  {
    useEffect(()  => {
        console.log('Running ...')
    },[])

    return(<p>here</p>)

}

export default Log;
Run Code Online (Sandbox Code Playgroud)

每当此代码运行时,我都会 在浏览器控制台中收到两次正在运行...消息。

我认为它应该运行一次,因为我在 useEffect 中有一个空的第二个参数。

谁能解释一下为什么它运行两次?

gav*_*vin 38

这是由于根树中最有可能的< StrictMode > 造成的。

什么是严格模式?

StrictMode 是一个用于突出显示应用程序中潜在问题的工具。

它如何使useEffect()运行两次?

它为其后代激活额外的检查和警告,或者换句话说......渲染两次。

Note:严格模式检查仅在开发模式下运行;它们不会影响生产构建。


归档时间:

查看次数:

23477 次

最近记录:

3 年,4 月 前