Другой распространенный шаблон UI при выполнении мутации данных — это оптимистичное отображение конечного состояния во время выполнения асинхронного запроса. В React 19 мы добавляем новый хук под названием useOptimistic, чтобы упростить это:

function ChangeName({ currentName, onUpdateName }) {
  const [optimisticName, setOptimisticName] = useOptimistic(currentName);
 
  const submitAction = async formData => {
    const newName = formData.get("name");
    setOptimisticName(newName);
    const updatedName = await updateName(newName);
    onUpdateName(updatedName);
  };
 
  return (
    <form action={submitAction}>
      <p>Ваше имя: {optimisticName}</p>
      <p>
        <label>Изменить имя:</label>
        <input
          type="text"
          name="name"
          disabled={currentName !== optimisticName}
        />
      </p>
    </form>
  );
}

Хук useOptimistic немедленно отобразит optimisticName, пока запрос updateName выполняется. Когда обновление завершится или произойдет ошибка, React автоматически вернется к значению currentName.


Назад