Throw form errors
Modular Forms has built-in error handling with the FormError
class to easily display individual errors when submitting a form.
Throw general error
General errors are errors that affect the entire form and can be displayed via the response
state in the UI, e.g. above the submit button.
Client-side errors
When processing the form client-side via the onSubmit
event listener, any error thrown is automatically caught and added to the response
state.
To throw custom errors to be displayed to the user, you can use our FormError
class. It inherits from the default Error
class and can contain a general error message as well as error messages for individual fields. More about this in a moment.
import { FormError, SubmitHandler, useForm } from '@modular-forms/preact';
type LoginForm = {
email: string;
password: string;
};
export default function App() {
const [loginForm, { Form, Field }] = useForm<LoginForm>();
const handleSubmit: SubmitHandler<LoginForm> = (values, event) => {
if (error) {
throw new FormError<LoginForm>('An error has occurred.');
}
};
return (
<Form onSubmit={handleSubmit}>
<div>…</div>
<div>{loginForm.response.message}</div>
<button type="submit">Login</button>
</Form>
);
}
Throw field error
Field errors are errors that are assigned to a specific field and added to its state. In addition to a general error message, you can also add an error message to specific fields using the second argument of the FormError
class constructor.
if (error) {
throw new FormError<LoginForm>('An error has occurred.', {
email: 'This email has been blacklisted.',
});
}
Field errors only
To not display a general error message and instead display only errors of individual fields, you can simply omit the general message.
if (error) {
throw new FormError<LoginForm>({
email: 'This email has been blacklisted.',
});
}