FORM VALIDATIONS (REACT)

 IN REACT, WE USE FORMIK FOR FORM VALIDATION.

TO INSTALL : npm i formik

TO USE : import {useFormik} from formik;

WE COPY CODE FROM DOC.

FORMIK ALREADY HAS HANDLECHANGE AND HANDLE SUBMIT FUNCTIONS SO COMMENT THEM FROM OUR CODE.

IT ALSO HAS VALUE, ONCHANGE, ONSUBMIT VALUES WE COPY THEM.

COMMENTSFORM.JSX

import { useState } from "react";
import { useFormik } from "formik";

const validate = (values) => {
  const errors = {};
  if (!values.username) {
    errors.username = "Username cannot be empty";
  } else if (values.username.length > 15) {
    errors.username = "Must be 15 characters or less";
  }

  if (!values.remarks) {
    errors.remarks = "remarks cannot be empty";
  } else if (values.remarks.length > 15) {
    errors.remarks = "Must be 15 characters or less";
  }
   
  return errors;
};

export default function CommentForm({ addComment }) {
  //   let [commentForm, setCommentForm] = useState({
  //     username: "",
  //     remarks: "",
  //     rating: "",
  //   });

  const formik = useFormik({
    initialValues: {
      username: "",
      remarks: "",
      rating: "",
    },
    validate,
    onSubmit: (values) => {
      alert(JSON.stringify(values, null, 2));
    },
  });

  //   let handleInputChange = (event) => {
  //     setCommentForm((currData) => {
  //       return { ...currData, [event.target.name]: event.target.value };
  //     });
  //   };
  //   let handleSubmit = (event) => {
  //     event.preventDefault();
  //     console.log(commentForm);
  //     addComment(commentForm);
  //     setCommentForm({
  //       username: "",
  //       remarks: "",
  //       rating: 5,
  //     });
  //   };
  return (
    <form onSubmit={formik.handleSubmit}>
      <h2>Comment Form</h2>
      <label htmlFor="username">Username:&nbsp;</label>
      <input
        placeholder="Enter username"
        type="text"
        value={formik.values.username}
        id="username"
        onChange={formik.handleChange}
        name="username"
      />
      {formik.errors.username ? <p style={{color:"red"}}>{formik.errors.username}</p> : null}
      <br />
      <br />

      <label htmlFor="remarks">Remarks:&nbsp;</label>
      <input
        placeholder="Write remarks"
        type="text"
        value={formik.values.remarks}
        id="remarks"
        onChange={formik.handleChange}
        name="remarks"
      />      {formik.errors.remarks ? <p style={{color:"red"}}>{formik.errors.remarks}</p> : null}

      <br />
      <br />

      <label htmlFor="rating">Rating:&nbsp;</label>
      <input
        type="number"
        value={formik.values.rating}
        id="rating"
        onChange={formik.handleChange}
        name="rating"
        min={1}
        max={5}
/>
      <br />

      <button>submit</button>
    </form>
  );
}






Comments

Popular posts from this blog

DEPENDENCIES IN useEffect()

ACTIVITY1

CONDITIONALS