useOptimistic – React
useOptimistic — это хук React, который позволяет оптимистично обновлять UI.
const [optimisticState, addOptimistic] = useOptimistic(state, updateFn);
Справочник
useOptimistic(state, updateFn)
useOptimistic — это хук React, который позволяет показать другое состояние, пока выполняется какое-то асинхронное действие. Он принимает состояние, которое может отличаться во время выполнения асинхронного действия, например, таким действием может быть сетевой запрос. Вы передаёте функцию, которая принимает текущее состояние и входные параметры для какого-то действия, и возвращает оптимистичное состояние, которое используется пока действие находится в режиме ожидания.
Это состояние называется «оптимистичным», потому что оно обычно используется для немедленного отображения пользователю результата выполнения действия, даже если само действие требует времени для завершения.
import { useOptimistic } from 'react';
function AppContainer() {
const [optimisticState, addOptimistic] = useOptimistic(
state,
// updateFn
(currentState, optimisticValue) => {
// объедините и верните новое состояние
// с оптимистичным значением
}
);
}
Посмотрите больше примеров ниже.
Параметры
state: значение, которое вернётся изначально, и во всех случаях, когда нет действий в состоянии ожидания.updateFn(currentState, optimisticValue): функция, которая принимает текущее состояние и оптимистичное значение, переданное вaddOptimistic, и возвращает результирующее оптимистичное состояние. Функция должна быть чистой.updateFnпринимает два параметра:currentStateиoptimisticValue. Возвращаемое значение будет результатом объединенияcurrentStateиoptimisticValue.
Возвращаемое значение
optimisticState: Результат оптимистичного состояния. Оно равноstate, пока нет действий в состоянии ожидания, иначе будет равно значению, возвращённому изupdateFn.addOptimistic:addOptimistic— это функция-диспетчер, которая вызывается при оптимистичном обновлении. Она принимает только один аргументoptimisticValueлюбого типа и вызоветupdateFnс параметрамиstateandoptimisticValue.
Использование
Оптимистичное обновление форм
Хук useOptimistic предоставляет возможность для оптимистичного обновления пользовательского интерфейса перед завершением работы в фоновом режиме, например, сетевого запроса. В контексте форм, эта техника помогает сделать приложение более отзывчивым. Когда пользователь отправляет форму, приложение не ждёт ответ сервера и сразу обновляет интерфейс с учётом ожидаемого результата.
Например, когда пользователь вводит сообщение в форму и нажимает кнопку “Отправить”, хук useOptimistic позволяет сообщению сразу отобразиться в списке с надписью “Отправка…”, ещё до того как сообщение фактически будет отправлено на сервер. Этот “оптимистичный” подход создаёт ощущение скорости и отзывчивости. Затем данные формы действительно отправляются на сервер в фоновом режиме. Как только приходит подтверждение сервера о том, что сообщение получено, надпись “Отправка…” удаляется.