Проверка формы иногда бывает скучной, но необходимой. Существует множество компонентов, одним из наиболее часто используемых является Redux Forms. Сегодня я покажу, как использовать один простой и эффективный компонент под названием Calidation.

Сначала давайте создадим простое приложение для реагирования с помощью create-react-app.

$ create-react-app form-validation-with-calidation

После создания приложения установите калибровку:

$ npm i calidation

Хорошо, давайте изменим некоторые файлы:

В App.css просто добавьте этот код:

...
.container {
   font-family: sans-serif;
   max-width: 200px;
   margin: 20px auto;
}
.input-group {
   margin-bottom: 20px;
}
label {
   display: block;
   font-size: 16px;
   font-weight: bold;
}
input {
   border: 1px solid #666;
   border-radius: 3px;
   padding: 5px 10px;
   display: block;
   width: 100%;
}
.error {
   color: darkred;
}
button {
   appearance: none;
   border: 0;
   border-radius: 3px;
   font-size: 20px;
   padding: 10px 20px;
   background-color: #2ecc71;
   color: white;
}

Замените App.js этим кодом:

import React, { Component, Fragment } from "react";
import { FormValidation } from "calidation";
import logo from './logo.svg';
import './App.css';
const config = {
   username: {
      isRequired: "The Username is required"
   },
   email: {
      isRequired: "The e-mail is required",
      isEmail: "You need enter a valid email, too"
   }
};
class App extends Component {
   render() {
      return (
         <div className="App">
            <header className="App-header">
               <img src={logo} className="App-logo" alt="logo" />
               <h1 className="App-title">React Form Validation with Calidation</h1>
           </header>
         
           <div className="container">
              <h2>User Form</h2>
              <FormValidation config={config}>
                 {({ errors, submitted }) => (
                    <Fragment>
                       <div className="input-group">
                          <label>
                             Username <input name="username" /
                          </label>
                          {submitted && errors.username && <span className="error">{errors.username}</span>}
                       </div>
 
                       <div className="input-group">
                          <label>
                             E-mail <input name="email" type="email" />
                          </label>
                          {submitted && errors.email && <span className="error">{errors.email}</span>}
                       </div>
                       <button type="submit">Submit</button
                    </Fragment>)}
                 </FormValidation>
              </div>
           </div>
        );
     }
  }
export default App;

Наиболее важные части:

1 - Переменная конфигурации, в которую вы можете добавить сообщения проверки для каждой проверки (isRequired, isEmail и т. Д.)

2 - Компонент FormValidation, в который вы можете добавить свою форму как дочернюю

Хорошо, запустите приложение: npm start и voilà!

Вы можете клонировать этот пример здесь: https://github.com/lblima/react-validation-with-calidation

Это все, ребята,

Спасибо за прочтение!