Get started
Example
The following code demonstrates a basic usage example.
import { useForm } from "solid-hook-form";
export const ExampleForm = () => {
const { register, onSubmit } = useForm({
defaultValues: {
name: "",
},
});
const saveExample = (values) => {
console.log(values);
};
return (
<form onSubmit={onSubmit(saveExample)}>
<input {...register("name")} />
<button type="submit">Save</button>
</form>
);
};Register fields
To make field value available for form validation and submission you need to register your component into the hook.
Form field name should match a registered component name.
import { useForm } from "solid-hook-form";
export const ExampleForm = () => {
const { register, onSubmit } = useForm({
defaultValues: {
name: "",
email: "",
agree: false,
},
});
const saveExample = (values) => {
console.log(values);
};
return (
<form onSubmit={onSubmit(saveExample)}>
<input {...register("name")} />
<input type="email" {...register("email")} />
<input type="checkbox" {...register("agree")}>
<button type="submit">Save</button>
</form>
);
};Apply validation
Solid Hook Form makes form validation easy by aligning with the existing HTML standard for form validation.
List of validation rules supported:
- required
- min
- max
- minLength
- maxLength
- pattern
- validate
import { useForm } from "solid-hook-form";
export const ExampleForm = () => {
const { register, onSubmit } = useForm({
defaultValues: {
name: "",
email: "",
agree: false,
},
});
const saveExample = (values) => {
console.log(values);
};
return (
<form onSubmit={onSubmit(saveExample)}>
<input {...register("name", { minLength: 2, pattern: /[A-Za-z]/ })} />
<input type="email" {...register("email", { maxLength: 254 })} />
<input type="checkbox" {...register("agree", { required: true })}>
<button type="submit">Save</button>
</form>
);
};TypeScript
Solid Hook Form is built with TypeScript, and you can define a FormValues type.
import { useForm } from "solid-hook-form";
type ExampleFormValues = {
name: string;
email: string;
agree: boolean
};
export const ExampleForm = () => {
const { register, onSubmit } = useForm<ExampleFormValues>({
defaultValues: {
name: "",
email: "",
agree: false,
},
});
const saveExample = (values: ExampleFormValues) => {
console.log(values);
};
return (
<form onSubmit={onSubmit(saveExample)}>
<input {...register("name")} />
<input type="email" {...register("email")} />
<input type="checkbox" {...register("agree")}>
<button type="submit">Save</button>
</form>
);
};Handle errors
Solid Hook Form provides an errors accessor to show you the errors in the form. errors' type will return given validation constraints. The following example showcases a required validation rule.
import { useForm } from "solid-hook-form";
export const ExampleForm = () => {
const { register, errors, onSubmit } = useForm({
defaultValues: {
name: "",
email: "",
},
});
const saveExample = (values) => {
console.log(values);
};
return (
<form onSubmit={onSubmit(saveExample)}>
<input {...register("name", { required: true })} aria-invalid={Boolean(errors().name)} />
{errors().name && <p role="alert">Name is required</p>}
<input
{...register("email", { required: "Email is required" })}
aria-invalid={Boolean(errors().email)}
/>
{errors().email && <p role="alert">{errors().email.message}</p>}
<button type="submit">Save</button>
</form>
);
};