17
loading...
This website collects cookies to deliver better user experience
npm install react-hook-form @hookform/resolvers yup
import React from "react";
const App = () => {
return (
<form>
<h2>Lets sign you in.</h2>
<br />
<input placeholder="email" type="email" required />
<br />
<input
placeholder="password"
type="password"
required
/>
<br />
<button type="submit">Sign in</button>
</form>
);
};
export default App;
React Hook Form
into our project:import React from "react";
import { useForm } from "react-hook-form";
// Hidden for simplicity
useForm()
hook:const App = () => {
const { register, handleSubmit, formState: { errors }, reset } = useForm();
return (
// Hidden for simplicity
};
register()
method allows registering an element and applying the appropriate validation rules.handleSubmit()
function will receive the form data if validation is successful.reset()
function will clear all form fields or reset to initial values.formState
to return form errors in an easier way.// Hidden for simplicity
import * as yup from "yup";
const schema = yup.object().shape({
email: yup.string().email().required(),
password: yup.string().min(8).max(32).required(),
});
@hookform/resolvers
so we can use our Yup schema to validate input values. Like this:import { yupResolver } from "@hookform/resolvers/yup";
// Hidden for simplicity
const App = () => {
const { register, handleSubmit, formState: { errors }, reset } = useForm({
resolver: yupResolver(schema),
});
return (
// Hidden for simplicity
};
reset()
method inside our function so that form inputs are cleared as soon as they're submitted.handleSubmit()
method to our form. Similar to this:const App = () => {
const { register, handleSubmit, formState: { errors }, reset } = useForm({
resolver: yupResolver(schema),
});
const onSubmitHandler = (data) => {
console.log({ data });
reset();
};
return (
<form onSubmit={handleSubmit(onSubmitHandler)}>
// Hidden for simplicity
</form>
};
const App = () => {
// Hidden for simplicity
return (
<form onSubmit={handleSubmit(onSubmitHandler)}>
<h2>Lets sign you in.</h2>
<br />
<input {...register("email")} placeholder="email" type="email" required />
<br />
<input
{...register("password")}
placeholder="password"
type="password"
required
/>
<br />
<button type="submit">Sign in</button>
</form>
);
};
const App = () => {
// Hidden for simplicity
return (
<form onSubmit={handleSubmit(onSubmitHandler)}>
<h2>Lets sign you in.</h2>
<br />
<input {...register("email")} placeholder="email" type="email" required />
<p>{errors.email?.message}</p>
<br />
<input
{...register("password")}
placeholder="password"
type="password"
required
/>
<p>{errors.password?.message}</p>
<br />
<button type="submit">Sign in</button>
</form>
);
};
import React from "react";
import { useForm } from "react-hook-form";
import { yupResolver } from "@hookform/resolvers/yup";
import * as yup from "yup";
const schema = yup.object().shape({
email: yup.string().email().required(),
password: yup.string().min(8).max(32).required(),
});
const App = () => {
const { register, handleSubmit, formState: { errors }, reset } = useForm({
resolver: yupResolver(schema),
});
const onSubmitHandler = (data) => {
console.log({ data });
reset();
};
return (
<form onSubmit={handleSubmit(onSubmitHandler)}>
<h2>Lets sign you in.</h2>
<br />
<input {...register("email")} placeholder="email" type="email" required />
<p>{errors.email?.message}</p>
<br />
<input
{...register("password")}
placeholder="password"
type="password"
required
/>
<p>{errors.password?.message}</p>
<br />
<button type="submit">Sign in</button>
</form>
);
};
export default App;