当前位置: 首页 > 知识库问答 >
问题:

由于严格模式,我的反应组件渲染了两次

逄宁
2023-03-14

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

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

做出反应。发展js

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

共有3个答案

酆景辉
2023-03-14

看起来组件呈现了两次,但是第一次呈现的组件没有卸载?至少这是我在React 17中看到的行为,当然可能是我代码中的一个错误

公良弘毅
2023-03-14

是的,您必须删除严格模式作为

严格模式不能自动为你检测副作用,但它可以通过使副作用更具确定性来帮助你发现它们。这是通过有意地双重调用以下函数来实现的:类组件构造函数、渲染和应该组件更新方法

来源:React文档:严格模式

郑胡媚
2023-03-14

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

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

例如,您可能会发现您的{app}被

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

如果是这样,您可以通过删除

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

 类似资料:
  • 所以就像标题所说的,我的应用程序的主页因为某种原因渲染了两次,我不知道为什么。从我的浏览器路由器,我最初调用一个JS文件,从那里我调用我的HomePage组件和React路由器,但然后我的页面渲染两次,我不知道为什么。 我的浏览器路由器(index.js): 然后pp.js被称为: 然后我的主页组件(index.jsx): 和路线。js: 但是我的页面是这样渲染的: 我真的很困惑,所以任何建议都会

  • 问题内容: 我已经实现了一个Modal组件,该组件在屏幕上显示一个模态对话框。通常,模态将有条件地显示。我可以通过两种方法在render函数中执行此操作: 在Modal组件中,我使用this.props.show为其自身添加了一个不同的类。如果为假,它将添加display:none以隐藏模式。 另一种方式是这样的: 这用于确定是否在渲染中添加Modal。 我想找出的是: 这两种方式有何不同? 其中

  • 我正在做我的项目,我注意到当严格模式打开时,它会将两个相同的元素推入我的数组。当严格模式关闭时,它只将一个元素推入数组。有什么解释为什么会这样吗? 这是我的状态。

  • 拥有如此简单的CRAapp: ./index.tsx: ./组件/主页。tsx: 我得到: 在控制台上。 为什么promise履行代码会被触发2次?我知道,对于React Strict模式,组件渲染了两次,但示例显示了一些不一致性-

  • I my app.js我已将路线定义为: 在我的中,我有一个链接: 但问题是,当我在aboue path中设置prop'确切={true}时,找不到这个路径 当我没有在上面的路径中设置exact={true}时,在同一页面上呈现路径组件及其下方的路径组件

  • 我有一个应用程序在这里呈现在严格模式和非严格模式。在非严格模式下工作正常,模型在onChange中更新,但在严格模式下不工作。有什么想法,为什么以及如何解决这个问题? https://stackblitz.com/edit/react-qvubmx 谢谢