⚛️ React 19 — useOptimistic
useOptimistic
— новый хук, который позволяет отобразить “оптимистичное” состояние. Оно называется “оптимистичным”, потому что мы надеемся, что запрос не свалится с ошибкой и после его выполнения состояние будет выглядеть именно так.

❓Как используется
В
useOptimistic
передаётся реальное состояние и функцию-reducerКомпонент использует “оптимистичное” состояние для рендера
Перед выполнением запроса обновляется “оптимистичное” состояние
Когда запрос завершился, нужно обновить реальное состояние
Как только реальное состояние обновилось, оптимистичное состояние обновится автоматически, так как оно передано в
useOptimistic
первым параметром.Если запрос упал с ошибкой, нужно откатить изменения в оптимистичном состоянии.
ℹ️ Первый вопрос, которым я задался, а в чём отличие от обычного setState
, путём экспериментов, вот что удалось найти:
useOptimistic
работает с формами. Работать с обычной кнопкой в SPA мне не удалось, обновление происходило только после завершения запросаuseOptimistic
работает только внутри асинхронного обработчика, что логично. Если убратьasync/await
, обновление произойдёт только после завершения запросаПараметр в useState используется только для инициализации, и игнорируется в последующих рендерах.
useOptimistic
будет сихронизироваться со значением со значением переданным первым параметром.
В любом случае, пока useOptimistic выглядит каким-то низкоуровневым API. Надеюсь скоро появится больше Best Practices.