Я только что начал новый проект create-react-app и заметил, что react дважды отрисовывает компоненты! Моя версия реакции в пакете . json is "react": "^16.13.1"
import React, { useRef } from "react";
const App = () => {
const renders = useRef(0);
console.log("renders: ", renders.current++);
return (
<div>
Hello
</div>
);
};
Это дает при первом рендеринге:
renders: 0
renders: 0
Теперь, если я добавлю кнопку в состояние приращения, каждое изменение состояния также создает два дополнительных рендера:
import React, { useRef } from "react";
const App = () => {
const [count, setCount] = useState(0);
const renders = useRef(0);
console.log("renders: ", renders.current++);
return (
<div>
<button onClick={() => setCount(count + 1)}>increment</button>
<div>count: {count}</div>
</div>
);
};
Это приведет к:
//--- initial render
renders: 0
renders: 0
//--- first click
renders: 1
renders: 2
//--- second click
renders: 3
renders: 4
//--- third click
renders: 5
renders: 6
Это нормально или это ошибка в последней версии react?