Я создаю форму для моего сайта, которая принимает контактную информацию пользователя. Сайт использует ReactJ для клиентской части, а для серверной части я использую NodeJ и ExpressJ.

Я использовал FormikJs для создания компонента формы. В приведенном ниже коде я уже создал форму и передам ее компоненту более высокого порядка, встроенному в Formik. Я нашел его полезным для проверки с помощью Yup, а также для быстрого создания макета формы и некоторых основных функций формы, но у меня возникают проблемы с тем, чтобы заставить его отправлять входные данные пользователей на сервер.

Я пытаюсь использовать axios для отправки POST-запроса в «/ send» (маршрут, созданный с помощью Express), чтобы внутренняя часть моего приложения могла получить контактную информацию и использовать nodemailer, чтобы отправить ее себе.

const FormikApp = withFormik({ mapPropsToValues: // props being mapped to values }, validationSchema: // Yup Validation Schema async handleSubmit(e, values, { resetForm, setErrors, setSubmitting }){ const { name, company, phone, email, message} = this.value; const form = await axios.post("/send", { name, company, phone, email, message }) resetForm(); setSubmitting(false); } })(Forms); 

Моя проблема в том, что без «const {имя, компания, телефон, электронная почта, сообщение} = this.value;» выдается ошибка, что имя, компания, телефон, адрес электронной почты и сообщение не определены. И с этой строкой все отображается нормально, но я все еще не могу получить электронное письмо от использования формы.

Я почти уверен, что настроил файл package.json для клиентского и серверного сайта одновременно с помощью правильно, и я верю, что есть проблема с самой формой. Я думаю, что виновата функция handleSubmit с formik, но я не знаю, как я мог это исправить. Это может быть потому, что я неправильно определяю значения или неправильно заявляю, что handleSubmit должен быть асинхронной функцией. Может ли кто-нибудь помочь?

Я планирую просто создать форму с нуля без formik, чтобы я мог лучше контролировать функцию handleSubmit и то, как определяются значения.

Заранее спасибо всем, кто помогает! Не стесняйтесь просить фрагменты кода, если это необходимо.

Я думаю, что вы должны изменить свой код в строке 8:

 const { name, company, phone, email, message} = values;