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: </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: </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: </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
Post a Comment