【问题标题】:React class component renders twice on Chrome onlyReact 类组件仅在 Chrome 上呈现两次
【发布时间】:2020-05-11 23:33:52
【问题描述】:

我用create-react-app创建了一个项目:

yarn create react-app example-react-ts --template typescript

然后创建了一个简单的组件:

import * as React from 'react'

interface ExampleProps {message: string}

class Example extends React.Component<ExampleProps> {
    render() {
        console.log("render")
        return (<div><p>{this.props.message}</p></div>)
    }
}

export default Example

Firefox 打印一次“渲染”。

Chrome 打印“渲染”两次


如果我用功能组件替换它:

import * as React from 'react'
interface ExampleProps {message: string}

export const Example = (props: ExampleProps) => {
    console.log("render")
    return (
        <div><p>{props.message}</p></div>
    );
}

export default Example

Firefox 和 Chrome 都打印“渲染”一次。

为什么?

【问题讨论】:

标签: reactjs typescript react-tsx


【解决方案1】:

问题是使用create-react-app创建项目时默认使用的Strict Mode

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

删除它解决了问题。

【讨论】:

  • 没错,但你是怎么知道的?
  • 直到我删除它才知道。我仍然不知道为什么它会渲染两次。
  • 它在开发中只渲染两次,而不是在生产中。它应该指出您的应用程序的一些问题
猜你喜欢
  • 2020-02-02
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多