javascript - 由于严格模式,我的 React 组件渲染了两次

标签 javascript reactjs react-dom react-strictmode

我的 React 组件渲染了两次。于是,我决定逐行调试,问题就在这里:

 if ( workInProgress.mode & StrictMode) {
        instance.render();
      }

React-dom.development.js

是因为严格模式吗?我可以禁用它吗?什么是严格模式?我需要它吗?

最佳答案

StrictMode 会渲染组件两次(在开发中,而不是在生产中),以便检测代码中的任何问题并向您发出警告(这可能非常有用)。

如果您在应用中启用了 StrictMode,但不记得启用了它,可能是因为您最初使用 create-react-app 或类似工具来创建应用,默认情况下会自动启用 StrictMode。

例如,您可能会发现您的 {app} 被 <React.StrictMode> 包裹着在你的index.js中:

  ReactDOM.render(
     <React.StrictMode>
       {app}
     </React.StrictMode>,
    document.getElementById('root')
  );

如果是这样,您可以通过删除 <React.StrictMode> 来禁用 StrictMode标签:

  ReactDOM.render(
    {app}
    document.getElementById('root')
  );

关于javascript - 由于严格模式,我的 React 组件渲染了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61254372/

相关文章:

css - 无法在 'CSSStyleDeclaration' 上设置索引属性 : Index property setter is not supported

javascript - 组件未定义//React和Webpack

javascript - 模态窗口不适用于分页数据表

javascript - 如何用对象数组中的特定索引替换元素-Javascript

javascript - 未捕获的类型错误 : Cannot read property 'openModal' of undefined at onClick React

javascript - JSON 到数组 react ,jquery

javascript - React js dateFns 上未定义的codesandbox 'format'问题

javascript - 自从更新react-dom和react-router-dom包: excessive li onClick behavior

javascript - 如何使用 Qunit 将 HTML 装置与 Karma 测试运行器结合使用?

javascript - 如何将固定定位元素堆叠在静态定位元素前面?