Javascript nodeEmailer-使用提交进行表单验证

Javascript nodeEmailer-使用提交进行表单验证,javascript,validation,nodemailer,Javascript,Validation,Nodemailer,这是我连接页面的表单。它工作得很好。但我也想在验证函数行(validate())中进行验证。然而,即使输入为空,它也在发送邮件 我想,我必须在handleSubmit行中添加一些东西,并使用isValid行 我该怎么办 const initialState={ name: "", subject: "", email: "", message: "", sent:false,

这是我连接页面的表单。它工作得很好。但我也想在验证函数行(validate())中进行验证。然而,即使输入为空,它也在发送邮件

我想,我必须在handleSubmit行中添加一些东西,并使用isValid行

我该怎么办

const initialState={
    name: "",
    subject: "",
    email: "",
    message: "",
    sent:false,
    nameError: "",
}

export default class Validation extends React.Component {

  state = initialState;

  handleName = (e) => {
    this.setState({
      name:e.target.value
    })
  }

  validate = () => {
    let nameError= "";

    if (!this.state.name) {
      nameError = "Name cannot be blank!"
    }

    if (nameError) {
      this.setState({ nameError });
      return false;
  }  

  return true;
  }

  handleSubmit = (e) => {

    e.preventDefault();

    const isValid = this.validate();
    if (isValid) {
      console.log(this.state);
    }
    
    this.sendingMail();
    
  }

  sendingMail=()=>{
    let data = {
      name:this.state.name,
    }

    axios.post('http://localhost:3001/api/form',data)
    .then(res=>{
      this.setState({
        sent:true,
      },this.resetForm())
    })
    .catch(()=> {
      console.log('message not sent');
    })
  }

 

“我该怎么办?”似乎只有在
有效时才应该调用
this.sendingMail()
。我错过什么了吗?为什么不将该调用移到
if
块中呢?因为如果我不调用handleSubmit中的.sendingMail(),则发送邮件不起作用。我不确定您是否理解我的评论,因为我不建议您将
this.sendingMail()
的调用移到
handleSubmit()
之外。相反,我建议将其移动到您预先存在的
if
块中,以便仅在验证通过时调用。哦,好的,我将其移动到了if-block之前,但没有任何更改。我想,我需要在if(isValid)中添加一些内容,以防止sendingMail()工作,但我没有找到。