Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 生命周期方法在初始渲染和重新渲染阶段被调用两次_Reactjs - Fatal编程技术网

Reactjs 生命周期方法在初始渲染和重新渲染阶段被调用两次

Reactjs 生命周期方法在初始渲染和重新渲染阶段被调用两次,reactjs,Reactjs,当我在每个生命周期方法中调用console.log()时,在Chrome控制台中,我看到每个方法都被调用了两次 因此,我创建了一个新的React应用程序。并在render中执行了console.log()。它在初始渲染时仍会被调用两次 我试着在stackoverflow上找到答案,但是他们通过编写脚本解决了这个问题,这不是一个解决方案。因为,即使它们可以显示渲染被调用一次,它实际上在后台被调用两次 --我卸载了节点visual studio。清除所有残留物。然后重新安装。我还是没能解决这

当我在每个生命周期方法中调用console.log()时,在Chrome控制台中,我看到每个方法都被调用了两次

  • 因此,我创建了一个新的React应用程序。并在render中执行了console.log()。它在初始渲染时仍会被调用两次

  • 我试着在stackoverflow上找到答案,但是他们通过编写脚本解决了这个问题,这不是一个解决方案。因为,即使它们可以显示渲染被调用一次,它实际上在后台被调用两次

  • --我卸载了节点visual studio。清除所有残留物。然后重新安装。我还是没能解决这个问题

    • 我会非常感激的。提前谢谢

    要在react中删除不必要的渲染,可以对类组件使用
    PureComponent
    ,对功能组件使用
    react.memo()


    这将检查道具的更改,并在道具更改时重新渲染组件。这在父级经常触发不影响子级的状态更改时非常有用。

    请检查您的index.js,如果您的App.js被包装在
    中,那么它将调用生命周期挂钩两次

    要解决问题,只需从
    打开App.js即可

    index.js

    ReactDOM.render(
    <App />, document.getElementById('root'));
    
    ReactDOM.render(
    而且
    

    由于您没有对组件装载执行任何异步操作,而且此处也没有传递任何道具,因此我怀疑父组件可能是原因。请尝试检查父组件是否也在重新提交。
    Person.js:6 [Person.js] constructor1
    Person.js:7 [Person.js] constructor2
    Person.js:6 [Person.js] constructor1
    Person.js:7 [Person.js] constructor2
    Person.js:10 [Person.js] render1
    Person.js:11 [Person.js] render2
    Person.js:10 [Person.js] render1
    Person.js:11 [Person.js] render2
    
    ReactDOM.render(
    <App />, document.getElementById('root'));