React form validation component.
$ npm install react-valid-form-component
Live Demo CodeSandbox
With this component, you can validate form fields according to the rules you specify. Simply define your form in the <ValidForm></ValidForm> tags to validate.
Component supports standard form elements;
<input />
<select></select>
<textarea></textarea>When the form is validated, it is automatically posted. You can manually Submit or Fetch using nosubmit prop.
You can follow the details about the form with onSubmit={(form, data, valid)} event.
Auto Submit Example CodeSandbox
// App.js
import React from 'react';
import ValidForm from 'react-valid-form-component'
function App() {
    return (
        <ValidForm action="https://httpbin.org/post" method="post">
            <div>
                <label for="validation">Text Example: </label>
                <input
                    type="text"
                    name="validation"
                    id="validation"
                    /* validation rules */
                    required
                    minLength="3"
                    maxLength="50"
                />
            </div>
            <div>
                <label for="validation">Email Example: </label>
                <input
                    type="email" /* validation with type */
                    name="validation"
                    id="validation"
                />
            </div>
            <button type="submit">Send Form</button>
        </ValidForm>
    )
}
export default App;Once the form is validated, you can send the data manually.
Fetch Example CodeSandbox
// App.js
import React from 'react';
import ValidForm from 'react-valid-form-component'
function App() {
    const onSubmit = (form, data, valid) => {
        const requestOptions = {
            method: "POST",
            headers: {
                Accept: "application/json",
                "Content-Type": "application/json"
            },
            body: JSON.stringify(data)
        };
        fetch("https://httpbin.org/post", requestOptions)
            .then(response => {
                if (response.ok) {
                    return response.json();
                } else {
                    throw new Error(`Response Error, Status Code : ${response.status}`);
                }
            })
            .then(json => {
                console.log(json);
            })
            .catch(function (error) {
                console.error(error);
            });
    }
    return (
        <ValidForm nosubmit onSubmit={(form, data, valid) => onSubmit(form, data, valid)}>
            <div>
                <label for="validation">Text Example: </label>
                <input
                    type="text"
                    name="validation"
                    id="validation"
                    /* validation rules */
                    required
                    minLength="3"
                    maxLength="50"
                />
            </div>
            <div>
                <label for="validation">Email Example: </label>
                <input
                    type="email" /* validation with type */
                    name="validation"
                    id="validation"
                />
            </div>
            <button type="submit">Send Form</button>
        </ValidForm>
    )
}
export default App;nosubmit Disable auto submit.
novalid "onSubmit" event is also triggered when the form is not valid.
data Default form elements value.
onSubmit={(form, data, valid)} When the form is submitted, it is triggered.
- 
form: Html form elemet.
- 
data: Form fields data.
- 
valid: Form is valid? (true/false)
You can add rules and change warning texts. You can use rules by defining them as type="" or prop. Follow the document for details.
- 
required="true": Required field.
- 
number="true": Only number field. Can be used as Type.
- 
alphanumeric="true": Only alphanumeric character.
- 
letters="true": Only letters.
- 
min="integer": Min value limitations.
- 
max="integer": Max value limitations.
- 
minlength="integer": Min value length limitations.
- 
maxlength="integer": Max value length limitations.
- 
email="true": Only email field. Can be used as Type.
- 
url="true": Only url field. Can be used as Type.
- 
confirm="Confirmation Field ID": Verifies that the two fields have the same value. Such as the "Password Repeat" field.
- 
regexp="Regular Expression"
Import Rules and Warnings objects for add rule.
import ValidForm, { Rules, Warnings } from 'react-valid-form';
// rule
Rules.customRule = (value) => {
  return (value === "Custom Rule")
};
// warning alert
Warnings.customRule = (params) => `This field is custom rule ${params}.`
// using
<input type="text" name="validation" id="validation" customRule />To use required validation with react-select component.
<Select
  name="reactSelect"
  inputId="reactSelect"
  className="react-select-valid"
  options={[
    { label: 'Option 1', value: '1' },
    { label: 'Option 2', value: '2' },
    { label: 'Option 3', value: '3' },
  ]}
/>- 
Add react-select-valid to the component as className for validation. 
- 
Fill in the component's inputID and name property. 
- 
If you don't want to validate, set the inputId property to no-validation. 
Barış Ateş