Я создаю проект с помощью 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 печатают «рендеринг» один раз.
Почему?