У меня есть три поля, поэтому, если нажать кнопку «Отправить», в React Hooks должно появиться всплывающее окно с сообщением об ошибке. В настоящее время я просто работаю с "Is-Invalid", чтобы показать пользователю, что он заполнит детали. Мне нужно всплывающее окно при отправке для отображения ошибок. Вот код
import React from "react";
import { useForm } from "./Hook";
export default function Form() {
const validateForms = values => {
let errors = {};
let emailPattern = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (values.firstName === "") {
errors.firstName = "First Name is required";
}
if (values.lastName === "") {
errors.lastName = "First Name is required";
}
if (values.email === "") {
errors.email = "email Is required";
} else {
if (emailPattern.test(values.email) === false) {
errors.email = "email Is required";
}
}
return errors;
};
const addUser = () => {
console.log("addUser called");
};
const { errors, values, onFormChange, onFormSubmit } = useForm(
addUser,
{
firstName: "",
lastName: "",
email: ""
},
validateForms
);
return (
<div className="container">
<form>
<div className="form-group">
<label htmlFor="firstName">Email address</label>
<input
type="email"
className={`form-control ${errors.firstName && "is-invalid"}`}
value={values.firstName}
name="firstName"
onChange={e => {
onFormChange(e);
}}
/>
</div>
<div className="form-group">
<label htmlFor="lastName">Last Name</label>
<input type="text" className={`form-control ${errors.lastName && "is-invalid"}`}
name="lastName"
value={values.lastName}
onChange={e => {
onFormChange(e);
}}
/>
</div>
<div className="form-group">
<label htmlFor="lastName">Email</label>
<input type="text" className={`form-control ${errors.email && "is-invalid"}`} name="email"
value={values.email}
onChange={e => {
onFormChange(e);
}}
/>
</div>
<button type="button" className="btn btn-primary" onClick={e => {onFormSubmit(e);}} >
Submit </button>
</form>
</div>
);
}
У меня есть три поля, поэтому, если нажать кнопку «Отправить», в React Hooks должно появиться всплывающее окно с сообщением об ошибке. В настоящее время я просто работаю с "Is-Invalid", чтобы показать пользователю, чтобы он заполнил детали. Мне нужно всплывающее окно при отправке для отображения ошибок. Вот код
import { useState } from "react";
export const useForm = (callback, initialState, validation) => {
const [values, setValues] = useState({
firstName: "",
lastName: "",
email: ""
});
const [errors, setErrros] = useState({});
const onFormChange = e => {
setValues({ ...values, [e.target.name]: e.target.value });
};
const onFormSubmit = () => {
//The following Line will get Object Return if any Errors Exist
const valudatedObj = validation(values);
if (Object.keys(valudatedObj).length === 0) {
console.log(values);
setErrros(valudatedObj);
} else {
setErrros(valudatedObj);
}
};
return {
values,
errors,
onFormChange,
onFormSubmit
};
};