Что делает хук `useOptimistic` и как он работает?
- useOptimistic(initialState, updateFn) позволяет временно подменять состояние UI, предполагая успешный результат асинхронного действия
- После завершения операции оптимистическое состояние сбрасывается
- updateFn(state, optimisticValue) должен возвращать новый объект (иммутабельность)