diff --git a/packages/toolpad-core/src/Crud/CrudForm.tsx b/packages/toolpad-core/src/Crud/CrudForm.tsx index ae522233203..85ae7b123d4 100644 --- a/packages/toolpad-core/src/Crud/CrudForm.tsx +++ b/packages/toolpad-core/src/Crud/CrudForm.tsx @@ -106,14 +106,21 @@ function CrudForm(props: CrudFormProps) { const { fields } = dataSource; - const [, submitAction, isSubmitting] = React.useActionState(async () => { - try { - await onSubmit(formValues); - } catch (error) { - return error as Error; - } - return null; - }, null); + const [isSubmitting, setIsSubmitting] = React.useState(false); + + const handleSubmit = React.useCallback( + async (event: React.FormEvent) => { + event.preventDefault(); + + setIsSubmitting(true); + try { + await onSubmit(formValues); + } finally { + setIsSubmitting(false); + } + }, + [formValues, onSubmit], + ); const handleTextFieldChange = React.useCallback( (event: React.ChangeEvent) => { @@ -317,7 +324,7 @@ function CrudForm(props: CrudFormProps) { return (