Обработка ошибок в контактной форме - получить правильное решение - PullRequest
0 голосов
/ 28 мая 2019

Я создал форму, используя material-ui с React.У меня есть некоторые проблемы с моим методом отправки.Я показываю снек-бар, чтобы информировать пользователя об успешном представлении, а также снэк-бар, чтобы предупредить пользователя о том, что обязательные поля отсутствуют.Моя проблема в том случае, если пользователь не заполнил все поля, но после второй попытки, наконец, добился успеха.Моя предупредительная закусочная все еще появляется, но я хочу показать успешную закусочную.Не уверен, что мне нужно изменить в моем методе.

 submit = () => {
    const {
      firstName,
      lastName,
      email,
      phone,
      date,
      time,
      projectStages,
      projectDescription,
      budgets,
      mainObjectives,
      applicationTypes,
    } = this.state
    // eslint-disable-next-line max-len
    if (lastName && firstName && email && phone) {
      this.setState({
        lastName,
        firstName,
        email,
        phone,
        date,
        time,
        projectStages,
        projectDescription,
        budgets,
        mainObjectives,
        applicationTypes,
      })
      document.getElementById('snackbar').style.display = 'block'
      setTimeout(() => {
        this.setState({ open: false })
      }, 2000)
      // eslint-disable-next-line max-len
      this.saveMessage(firstName, lastName, phone, email, date, time, projectStages, projectDescription, budgets, mainObjectives, applicationTypes)
    } else {
      document.getElementById('snackbar').style.display = 'block'
      document.getElementById('snackbar').style.backgroundColor = 'red'
      document.getElementById('snackbar').textContent = 'Please fill in all required fields'
      setTimeout(() => {
        document.getElementById('snackbar').style.display = 'none'
      }, 2000)
    }
  }

1 Ответ

0 голосов
/ 28 мая 2019

Сбросьте таймер, прежде чем устанавливать его снова

timer && clearTimeout(timer);
...