Simple Validation Form In React Using UseHooks And LocalStorage With Some TailwindπŸ₯³πŸŽ‰

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ всСм, ΠΊΡ‚ΠΎ зашСл Π½Π° ΠΌΠΎΠΉ Π±Π»ΠΎΠ³, я ΠΎΡ‡Π΅Π½ΡŒ Ρ†Π΅Π½ΡŽ это ΠΈ надСюсь, Ρ‡Ρ‚ΠΎ смогу ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ рСгистрации Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ.πŸ™πŸ™πŸ™

Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π±Π»ΠΎΠ³, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ погрузимся Π² ΠΊΠΎΠ΄. πŸ‘¨πŸ’» πŸ‘©πŸ’»

Π‘Π½Π°Ρ‡Π°Π»Π° напишСм простой jsx-ΠΊΠΎΠ΄:

<div
      className="login grid place-content-center  
    bg-gradient-to-r from-purple-900 via-purple-1000 to-blue-800 "
    >
      <form
        className="card grid place-content-center  h-96 w-96  
       "
        onSubmit={handleSubmit}
      >
        <label htmlFor="">name:</label>
        <input
          type="text"
          value={name}
          placeholder="Enter Your Name"
          onChange={(e) => setName(e.target.value)}
        />
        {errors.name}

        <label htmlFor="email">Email:</label>
        <input
          type="email"
          placeholder="email address"
          id="email"
          value={email}
          onChange={(e) => setEmail(e.target.value)}
        />
        {errors.email}

        <label htmlFor="password">Password:</label>
        <input
          type="text"
          placeholder="password"
          value={password}
          id="password"
          onChange={(e) => setPassword(e.target.value)}
        />
        {errors.password}

        <label htmlFor="phoneNumber">phone Number:</label>
        <input
          type="text"
          value={phoneNumber}
          placeholder="phone Number"
          id="phoneNumber"
          onChange={(e) => setPhoneNumber(e.target.value)}
        />

        <div className="buttons flex gap-3 justify-center mt-5">
          <button type="submit" className="btn-1">
            Sign Up
          </button>
          <button>
            <Link
              className="
        "
              to="/login"
            >
             Login{" "}
            </Link>
          </button>
        </div>
      </form>
    </div>

Π’Ρ…ΠΎΠ΄ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

2- Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эту Ρ„ΠΎΡ€ΠΌΡƒ динамичСской:
Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡŽΡ‡ΠΊΠΈ UseState, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ

 const [email, setEmail] = useState("")
         const [password, setPassword] = useState("")
         const [name, setName] = useState("")
         const [phoneNumber, setPhoneNumber] = useState("")
         const [errors, setErrors] = useState({})
Π’Ρ…ΠΎΠ΄ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

const handleSubmit = (e) => {
    e.preventDefault()
    formValidation()
    setUsers([...users, { email: email, password: password }])
  }
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ условия для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ рССстра

 const formValidation = () => {
    let newErrors = {}
    if (name === "") {
      newErrors.name = <h1 className="text-red-800 text-center">
        Name Can't Be Blanck</h1>
    }
    if (email === "") {span
      newErrors.email = <span className="text-red-800 text-center">
         Email Address Is Required</span>
    } else if (/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/.test(email)) {
      newErrors.email = <span className="text-red-800 text-center">
        Email address is invalid</span>
    } else {
      newErrors.email = <h1 className="text-green-800 text-center ">
        Email is Valid</h1>
    }
    if (password === "") {
      newErrors.password = <span className="text-red-800 text-center">
        Password Is Required</span>
    } else if (!/^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,15}$/.test(password)) {
      newErrors.password = <span className="text-red-800 text-center">
        Invalid Password Format</span>
    } else {
      newErrors.password = <span className="text-green-800 text-center ">
        Correct Password</span>
    }
    setErrors(newErrors)
  }
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

> И послСдний шаг — сохранСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² localstorage Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ локальноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

const [users, setUsers] = useState(() => {
    const data = localStorage.getItem("data")
    return data ? JSON.parse(data) : []
  })
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

И ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ UseHooks, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π½Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² localstorage, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ.

useEffect(() => {
    localStorage.setItem("data", JSON.stringify(users))
  }, [users])

Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

πŸ‘‰ ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΌΠΎΠΉ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° github

> Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Π’ ΠΈΡ‚ΠΎΠ³Π΅, я попытался Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… Π² localstorage. НадСюсь, Ρ‡Ρ‚ΠΎ я смог ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ, ΠΈ ΡƒΠ΄Π°Ρ‡ΠΈ всСгда

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ
devanswers.ru
Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ