TGViewer
Заметки про React Заметки про React @ru_react_notes · 3.43K subscribers
Post #459 2.99K
Создание переиспользуемой SubmitButton

В React 19 появился хук useFormStatus для получения статуса формы. С его помощью можно создать переиспользуемую кнопку действия, которая будет сама переходить в состояние прогресса и дизейблиться. Пример компонента кнопки:


export default function SubmitButton({
children,
loading,
disabled,
...otherProps
}: Props & React.HTMLProps<HTMLButtonElement>) {
const { pending } = useFormStatus();
const isSubmitting = pending || loading;

return (
<Button
{...otherProps}
disabled={isSubmitting || disabled}
type="submit"
>
{isSubmitting ? (
// progress
) : (
children
)}
</Button>
);
}


В своей статье автор привел пример использования этой кнопки в React 19 с серверными функциями. Такой пример будет работать, даже когда JavaScript выключен или когда кнопка еще не гидратировала:


export default function Component({ contactId }: { contactId: string }) {
return (
<form action={deleteRecord}>
<input type="hidden" name="contactId" value={contactId} />
<SubmitButton>Delete</SubmitButton>
</form>
);
}


https://aurorascharff.no/posts/creating-a-reusable-submitbutton-with-useformstatus
  • 👍 10
  • ❤ 1
  • 🔥 1
More from @ru_react_notes
  1. Jun 24, 2025Реактивность – это легко Стандартный useContext заставляет обновляться все компоненты-потр…
  2. Jun 17, 2025Остерегайтесь скрытых проблем при работе с search params Типо-безопасность — это только ве…
  3. Jun 4, 2025Почему Error Boundary, а не просто try/catch для компонентов В React нельзя использовать t…
  4. May 29, 2025Анонс TypeScript Native Вышла превью версия TypeScript написанная на Go. Ее можно установи…
  5. May 27, 2025Управление фокусом в React с помощью flushSync Установить фокус на инпуте сразу в React мо…
  6. May 15, 2025TanStack DB TanStack представила новую библиотеку – TanStack DB – реактивный клиентский ст…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →