Now this is an interesting approach, building further upon Uncontrolled Components:
The React Hook Form (react-hook-form) library provides a new form validation mechanism which embraces uncontrolled form validation and support controlled components.
The core idea is to register HTML input’s ref into the custom hook and therefore subscribe to its input value, validate and evaluate the form submission.
I guess this one makes more sense to many as it immediately gives you a values
object containing all form values. Validation is also built-in
import React from "react";
import useForm from "react-hook-form";
const Example = () => {
const { handleSubmit, register, errors } = useForm();
const onSubmit = values => {
console.log(values);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input
name="email"
ref={register({
required: 'Required',
pattern: {
value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
message: "invalid email address"
}
})}
/>
{errors.email && errors.email.message}
<input
name="username"
ref={register({
validate: value => value !== "admin" || "Nice try!"
})}
/>
{errors.username && errors.username.message}
<button type="submit">Submit</button>
</form>
);
};
React Hook Form Presentation (Twitter Thread) →
React Hook Form →
💡 The React Hook Form Twitter Thread was compiled from its origin tweet to one single page using Threader
Leave a comment