Validation de Formulaire en Reactjs
Validation de Formulaire en Reactjs
Pour valider vos formulaires en react vous pouvez utiliser du JavaScript uniquement mais cette manière de faire est trop longue (trop de répétition de code et
très susceptible aux erreurs). Ou vous pouvez utiliser des bibliothèques comme « react hook form », « Formik » ou « Yup ».
Dans notre cas, nous allons utiliser la bibliothèque YUP pour valider le schéma de notre formulaire.
Application :
1. Créez un nouveau projet ReactJS
2. Installez tous les modules nécessaires :
function App() {
return (
<div className="container1">
<h1 className="text-center"><u>Inscription</u></h1>
<form onSubmit={handleSubmit(onSubmit)}>
<table className="table_form">
<tr className="line_form">
<td><label htmlFor="email">Name : </label></td>
<td><input type="text" className="form-control" {...register("name")} name="name" id="name" /></td>
<td><small className="text-danger"> {errors.name?.message} </small></td>
</tr>
<tr className="line_form">
<td><label htmlFor="email">Email : </label></td>
<td><input type="email" className="form-control" {...register("email")} /></td>
<td><small className="text-danger"> {errors.email?.message} </small></td>
</tr>
<tr className="line_form">
<td><label htmlFor="password">Password : </label></td>
<td><input type="password" className="form-control" {...register("password")} name="password" id="password" /></td>
<td><small className="text-danger"> {errors.password?.message} </small></td>
</tr>
<tr className="line_form">
<td><label htmlFor="confirmPassword">ConfirmPassword : </label></td>
<td><input type="password" className="form-control" {...register("confirmPassword")} name="confirmPassword" id="confirmPassword" /></td>
<td><small className="text-danger"> { errors.confirmPassword ?.message } </small></td>
</tr>
<tr className="line_form">
<td><label htmlFor="acceptTerms" className="form-check-label"> J'ai lu et j'accepte les conditions </label></td>
<td><input type="checkbox" className="form-check-input" {...register("acceptTerms")} name="acceptTerms" /></td>
<td><small className="text-danger d-block"> {errors.acceptTerms?.message} </small></td>
</tr>
<tr className="line_form">
<td></td>
<td><button type="submit" className="btn btn-primary">S'inscrire</button></td>
<td><button type="button" className="btn btn-danger" onClick={() => reset()}>Annuler</button></td>
</tr>
</table>
</form>
</div>
);
};
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}
.App {
text-align: center;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.text-center{
text-align: center;
}
.container1{
margin: auto;
width: 60%;
height: 420px;
background-color: rgb(129, 198, 230);
border: 5px solid #4f02b3;
border-radius: 10px;
box-shadow: 10px 10px #f30909;
}
.table_form{
margin: auto;
font-weight: bold;
font-size: 16px;
width: 90%;
}
input{
font-size: 16px;
}
small{
color: #f30909;
}
.line_form{
height: 50px;
}
button{
box-shadow: 0 8px 16px 0 rgba(74, 40, 226, 0.2), 0 6px 20px 0 rgba(214, 40, 147, 0.19);
width: 200px;
height: 50px;
margin: 10px;
border-radius: 5px;
border: 2px solid #f30909;
background-color: hotpink;
font-size: large;
font-weight: bolder;
button:hover {
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
background: transparent;
color: #f30909;
}