Javascript EmailJs和表单验证问题,请作出反应
我无法通过EmailJs在React中发送电子邮件。当我验证表单并显示所有错误时,表单仅在第二次单击后才发送电子邮件,我真的不知道为什么会发生这种情况。请帮忙Javascript EmailJs和表单验证问题,请作出反应,javascript,reactjs,forms,email,Javascript,Reactjs,Forms,Email,我无法通过EmailJs在React中发送电子邮件。当我验证表单并显示所有错误时,表单仅在第二次单击后才发送电子邮件,我真的不知道为什么会发生这种情况。请帮忙 const useForm=(回调,验证)=>{ const[values,setValues]=useState({ 标题:“, 电邮:“, 消息:“”, }); const[errors,setErrors]=useState({}); const[send,setSend]=使用状态(false); const[isSubmiti
const useForm=(回调,验证)=>{
const[values,setValues]=useState({
标题:“,
电邮:“,
消息:“”,
});
const[errors,setErrors]=useState({});
const[send,setSend]=使用状态(false);
const[isSubmiting,setIsSubmiting]=useState(false);
useffect(()=>{
if(Object.keys(errors).length==0){
如果(发布提交){
设置结束(真);
}
}
},[错误];
常数handleChange=(e)=>{
常量{name,value}=e.target;
设定值({
价值观
[名称]:值,
});
};
常量handleSubmit=(e)=>{
e、 预防默认值();
设置错误(验证(值));
设置提交(真);
如果(发送){
emailjs
.sendForm(
“服务”,
“templatekey”,
e、 目标,,
“用户密钥”
)
.那么(
(结果)=>{
console.log(result.text);
},
(错误)=>{
console.log(error.text);
}
);
e、 target.reset();
}
};
返回{handleChange,values,handleSubmit,errors};
};
导出默认useForm代码>将setErrors(validate(values))和setIsSubmiting(true)移动到handleChange后,对我来说效果很好:)
})
})
返回{handleChange,values,handleSubmit,errors};
}; 分享错误,只分享代码中有趣的部分或您认为错误所在的位置。
const handleChange = (e) => {
const { name, value } = e.target;
setValues({
...values,
[name]: value,
});
setErrors(validate(values));
setIsSubmiting(true);
const handleSubmit = (e) => {
e.preventDefault();
if (send) {
console.log("WYSYŁAM");
emailjs
.sendForm(
"service",
"template",
e.target,
"user"
)
.then(
(result) => {
console.log(result.text);
},
(error) => {
console.log(error.text);
}
);
e.target.reset();
}