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

ReactJS类组件渲染两次

沈开畅
2023-03-14

非常简单的例子:我的App.js文件读取

import React from 'react';
import Test from './component/Test';

function App() {
  return (
    <div className="App">
      <Test/>
    </div>
  )
}

export default App;

我的Test.js文件上写着

import React, { Component } from 'react'

class Test extends Component {

    render() {
        console.log('rendered')
        return null
    }
}

export default Test

在控制台中,渲染总是打印两次。为什么啊?

共有1个答案

史骏祥
2023-03-14

原因是React。
反应。StrictMode是2018年版本16.3.0中引入的包装器,在16.8.0中也适用于钩子。

代码:检查索引。下面的代码是js

 <React.StrictMode>
    <App />
  </React.StrictMode>

反应StrictMode不能一次发现副作用,但它可以通过有意调用两次某些关键函数来帮助我们找到副作用。

这些职能是:

  • 类组件构造函数、呈现和shouldComponentUpdate方法
  • 类组件静态getDerivedStateFromProps方法
  • 功能组件主体
  • 状态更新程序函数(setState的第一个参数)
  • 传递给useState、UseMoom或useReducer的函数

请查看本博客
https://mariosfakiolas.com/blog/my-react-components-render-twice-and-drive-me-crazy/

 类似资料:
  • 问题内容: 我想在我的ajax请求完成后呈现我的组件。 在下面您可以看到我的代码 但是我收到下面的错误,因为我正在ajax请求的done方法内返回render。 有没有办法在开始渲染之前等待我的ajax请求结束? 问题答案: 有两种处理方法,您可以选择哪种方法取决于应该拥有数据的组件和加载状态。 将Ajax请求移至父级并有条件地渲染该组件: 将Ajax请求保留在组件中,并在加载时有条件地渲染其他内

  • 我有一个应用程序组件和测试组件 应用程序组件 测试组件:

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

  • 问题内容: 我有以下组成部分: article_list.jsx 尽管JSON请求工作正常,并且返回了包含五个JSON对象的数组,但它们只是不呈现! 我是ReactJS的新手,并且阅读(并观看了)很多教程,但是似乎我缺少一些东西。 有什么建议? 问题答案: forEach中的return语句不返回值,而是像语句一样,您需要使用map 否则,如果要使用forEach,则需要修改代码,例如

  • 我遇到了这个简单的React函数组件,它渲染四次,而我希望它最初渲染一次,执行useffect更新状态,然后再次渲染。相反,控制台发送4个日志输出,表示它渲染了4次。了解react功能组件的基本生命周期的原因和资源吗? https://codesandbox.io/s/solitary-tree-t120d?file=/src/App.js:149-191

  • 问题内容: 我试图通过对象属性(此示例的名称)并在函数的轻松循环中列出它们。我发现这样做有些尴尬,但这似乎不正确。 这是我得到的: 有一个更好的方法吗?我只需要一个循环即可遍历对象数组,列出所需的属性并创建许多html节点之一。 问题答案: 您可以简单地在数组上 映射