use-validate-react
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

📖 use-validate-react Documentation

📝 Overview

use-validate-react is a lightweight and flexible React hook that simplifies form validation. It supports both default and custom validation rules for easy form handling.

📦 Installation

Install the package using npm or yarn:

npm install use-validate-react

OR

yarn add use-validate-react

🚀 Usage Guide

🔹 Basic Example (JavaScript)

import { useValidateForm } from "use-validate-react";
import React, { useState } from "react";

const MyForm = () => {
const { validate, errors } = useValidateForm();
const [formData, setFormData] = useState({ email: "", password: "" });

    # Validation rules are optional, by default validation error will be This field is required but you can add your own validation rules like below.

    const handleSubmit = () => {
        const result = validate(formData, [], {
            email: (value) => (!/\S+@\S+\.\S+/.test(value) ? "Invalid email format" : null),
            password: (value) => (value.length < 6 ? "Password must be at least 6 characters" : null),
        });

        if (result.isValid) {
            console.log("Form is valid, submitting...");
        }
    };

    return (
        <div>
            <input
                type="text"
                value={formData.email}
                onChange={(e) => setFormData({ ...formData, email: e.target.value })}
            />
            {errors.email && <p>{errors.email}</p>}

            <input
                type="password"
                value={formData.password}
                onChange={(e) => setFormData({ ...formData, password: e.target.value })}
            />
            {errors.password && <p>{errors.password}</p>}

            <button onClick={handleSubmit}>Submit</button>
        </div>
    );

};

export default MyForm;

🔹 TypeScript Example

import { useValidateForm } from "use-validate-react";
import React, { useState } from "react";

interface FormData {
email: string;
password: string;
}

const MyForm: React.FC = () => {
const { validate, errors } = useValidateForm();
const [formData, setFormData] = useState<FormData>({ email: "", password: "" });

    const handleSubmit = () => {
        const result = validate(formData, [], {
            email: (value) => (!/\S+@\S+\.\S+/.test(value) ? "Invalid email format" : null),
            password: (value) => (value.length < 6 ? "Password must be at least 6 characters" : null),
        });

        if (result.isValid) {
            console.log("Form is valid, submitting...");
        }
    };

    return (
        <div>
            <input
                type="text"
                value={formData.email}
                onChange={(e) => setFormData({ ...formData, email: e.target.value })}
            />
            {errors.email && <p>{errors.email}</p>}

            <input
                type="password"
                value={formData.password}
                onChange={(e) => setFormData({ ...formData, password: e.target.value })}
            />
            {errors.password && <p>{errors.password}</p>}

            <button onClick={handleSubmit}>Submit</button>
        </div>
    );

};

export default MyForm;

📌 API Reference

1️⃣ useValidateForm()

Returns an object containing: - validate(formData, requiredFields, customRules) - Validates formData based on default or custom validation rules. - Returns { isValid: boolean, errors: Record<string, string> } - errors: An object storing validation error messages.

Example of Custom Validation

const validationRules = {
    email: (value) => (!/\S+@\S+\.\S+/.test(value) ? "Invalid email format" : null),
    password: (value) => (value.length < 8 ? "Must be at least 8 characters" : null),
};
const result = validate(formData, [], validationRules);

🎯 Features

✔ Lightweight & Easy to Use ✔ Supports Custom Validation Rules ✔ TypeScript Compatible ✔ Handles Multiple Fields Automatically ✔ Works with Controlled Components

📜 License This project is MIT Licensed.

📞 Need Help? If you find an issue or have suggestions, feel free to open an issue.

Happy coding! 🚀

Package Sidebar

Install

npm i use-validate-react

Weekly Downloads

6

Version

1.0.1

License

MIT

Unpacked Size

7.55 kB

Total Files

5

Last publish

Collaborators

  • wali-developer