@an6re9

Почему при присвоении уже имеющегося значения в state, в 1 раз произойдет ререндер?

Доброго времени суток, собственно заголовок вопроса говорит сам за себя)

если поменять стейт с 0 на 1, то произойдет ререндер - логично
если поменять стейт с 1 на 1 - то 1 раз произойдет ререндер и при повторных попытках изменения больше происходить не будет.

Откуда берется этот 1 ререндер?

import { useState } from "react";

export default function App() {
  const [value, setValue] = useState(0);
  const num = 1;

  console.log(`render ${value}`);
  return (
    <div className="App">
      <div>{value}</div>
      <button onClick={() => setValue(() => 1)}>Click setValue(() => 1)</button>
      <button onClick={() => setValue(() => num)}>
        Click setValue(() => num)
      </button>
      <button onClick={() => setValue(1)}>Click setValue(1)</button>
      <button onClick={() => setValue(num)}>Click setValue(num)</button>
      <button onClick={() => setValue((prev) => prev)}>
        Click setValue(prev=>prev)
      </button>
    </div>
  );
}
// prev = 0;  //1 рендер
// prev = 1   //2  рендер
// prev = 1   //3  рендер ?
// prev = 1   /////// никаких ререндеров
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы