как понял функциональное обновление, это когда мы из прошлого рендера берем стейт, и на основе его изменяем. Например count. setCount(c=> c+1)
мы обращаемся не на прямую к стейту, а к значению стейта из прошлого рендера. Надеюсь я правильно понимаю)
1. изменение стейта вызывает ре-рендер, но не наоборот (более того, нельзя менять стейт во время рендера - это вызывает зациклинность)
2. изменение стейта - асинхронная операция
Пока выглядит так, что вы только читали про реакт. Попишите немного, все сложится