// counter = 0
setCounter(() => counter + 1)
setCounter(() => counter + 1)
// почему тут 1 ?
// -------------------------------
setCounter(prev => prev + 1)
setCounter(prev => prev + 1)
// почему тут 2 ? Откуда второй вызов setCounter знает, что над
// стейтом уже были манипуляции и у него новое значение?