reactjsvalidationtailwind-css

Is react 18 problem in this form validation?


in form validation, I use Handel change and the problem is it does not show in input value and state change with a single value, and at the last validation in submitting it does not show answer is it a problem for react 18 version... image:https://drive.google.com/file/d/1s1uvHR7LrDOh1Ud2_hBzuFXum-MWYBHh/view?usp=sharing

import React, { useEffect, useState } from "react";
export default function App() {
    const [data, setData] = useState({
        name: "",
        password: "",
    });

    function handlechange(e) {
        let { name, value } = e.target;
        return setData({ ...data, [name]: value }), console.log(data);
    }

    const onSubmithandeler = (e) => {
        let names = data.name;
        let passwords = !data.password.match(1);
        if (!names) {
            console.log("invalide name");
        } else if (!passwords) {
            console.log("password invalid");
        } else if (!names || !passwords) {
            console.log("all err");
        } else {
            setData(...data);
            console.log(...data);
        }
        e.preventDefault();
    };

    return (
        <div style={{ fontFamily: "roboto" }}>
            <nav
                className="font-lg w-full
 text-white flex font-bold justify-start bg-blue-700 sticky"
            >
                <h3 className="m-1 p-2">Ecomerce</h3>
                <h3 className="m-1 p-2">Login</h3>
                <h4 className="m-1 p-2">Register</h4>
            </nav>
            <div className="bg-gray-300">
                <div className="w-full h-screen flex items-center justify-center">
                    <form
                        onSubmit={onSubmithandeler}
                        className="w-full md:w-1/3 bg-white rounded-lg"
                    >
                        <div className="flex font-bold justify-center mt-6">
                            <img
                                className="h-20 w-20"
                                src="https://cdn.pixabay.com/photo/2018/11/13/21/43/avatar-3814049_960_720.png"
                            />
                        </div>
                        <h2 className="text-3xl text-center text-gray-700 mb-4">
                            Login Form
                        </h2>
                        <div className="px-12 pb-10">
                            <div className="w-full mb-2">
                                <div className="flex items-center">
                                    <input
                                        type="text"
                                        name="name"
                                        value=""
                                        onChange={handlechange}
                                        placeholder="Username"
                                        className="-mx-6 px-8  w-full border rounded px-3 py-2 text-gray-700 focus:outline-blue-400"
                                    />
                                </div>
                            </div>
                            <div className="w-full mb-2">
                                <div className="flex items-center">
                                    <input
                                        type="text"
                                        placeholder="Password"
                                        value=""
                                        name="password"
                                        onChange={handlechange}
                                        className="-mx-6 px-8 w-full border rounded px-3 py-2 text-gray-700 focus:outline-blue-400"
                                    />
                                </div>
                            </div>
                            <div className="flex items-center ">
                                <input
                                    type="checkbox"
                                    className=" m-2 p-2 float-right focus:outline-blue-400"
                                />
                                <a
                                    href="#"
                                    className="text-xs m-2 p-2 text-gray-500 float-right "
                                >
                                    Forgot Password?
                                </a>
                            </div>
                            <button
                                type="submit"
                                value="Submit"
                                className="w-full py-2 rounded-full bg-green-600 text-gray-100  focus:outline-green-400"
                            >
                                Log In
                            </button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    );
}

Solution

  • problem-solves if value-{data.[something]}