Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EmailJs和表单验证问题,请作出反应_Javascript_Reactjs_Forms_Email - Fatal编程技术网

Javascript EmailJs和表单验证问题,请作出反应

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

我无法通过EmailJs在React中发送电子邮件。当我验证表单并显示所有错误时,表单仅在第二次单击后才发送电子邮件,我真的不知道为什么会发生这种情况。请帮忙

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();
}