@dxdiaj

Почему результаты react profiler зависят от порядка компонентов?

Добрый день. Проверяю производительность с помощью профайлера, наткнулся на момент, что значения меняются при изменении порядка компонентов.
Как пример

Компонент 1
function CounterFunc() {
  const [count, setCount] = useState(0);

  function dec() {
    setCount((prevCount) => prevCount - 1);
  }

  function inc() {
    setCount((prevCount) => prevCount + 1);
  }

  return (
    <div>
      <Button onClick={dec}>-</Button>
      <div>{count}</div>
      <Button onClick={inc}>+</Button>
    </div>
  );
}

Компонент 2
function TimerFunctional() {
  const [date, updateDate] = useState(new Date());

  const intervalIdRef = useRef<NodeJS.Timeout>();

  useEffect(() => {
    const { current } = intervalIdRef;

    if (!current) {
      intervalIdRef.current = setInterval(() => {
        updateDate(new Date());
      }, 1000);
    }

    return () => {
      if (current) {
        clearInterval(current);
      }
    };
  }, []);

  return <div>{date.toLocaleTimeString()}</div>;
}


И рендер
function App() {
  return (
    <>
      <TimerFunctional />
      <CounterFunc />     
    </>
  );
}


Результаты зависят от порядка TimerFunctional и CounterFunc
6071f4ba5ad7f628311384.png
6071f4c6f0da5831261081.png

Что я упускаю?
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы