Доброго времени суток, собственно заголовок вопроса говорит сам за себя)
если поменять стейт с 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 /////// никаких ререндеров