Если вы попытаетесь использовать форму netlify в nuxt3, вы можете столкнуться с некоторыми проблемами, даже если будете следовать инструкциям. Документы netilify содержат следующие инструкции:

Закодируйте HTML-форму на любой странице вашего сайта, добавьте data-netlify="true" или атрибут netlify к тегу <form>, и вы сможете начать получать материалы в панели администратора сайта Netlify.

Теперь, если вы сделаете это, вы можете быть удивлены, когда зайдете к своему администратору netlify и увидите, что никакая форма не была обнаружена. Хорошей новостью является то, что это довольно просто исправить.

Первое, что нам нужно сделать, это немного изменить нашу форму. Согласно netlify, поскольку мы находимся в nuxt, это форма, отображаемая javascript, поэтому нам нужно добавить сюда дополнительный ввод.

Для формы с визуализацией JavaScript вам нужно добавить скрытый ввод с name="form-name" к возвращаемым элементам формы.

<template>
  <form
    name="contact"
    method="POST"
    data-netlify="true"
    data-netlify-honeypot="bot-field"
    @submit="handleFormSubmit($event)"
  >
  
    <input type="hidden" name="form-name" value="contact" />

    <input style="visibility: hidden; display: none;" name="bot-field">

    <div class="form-item">
      <label for="name">Name</label>
      <input v-model="name"
        type="text"
        id="name"
        name="name"
      >
    </div>

    <div class="form-item">
      <label for="email">Email</label>
      <input v-model="email"
        type="text"
        id="email"
        name="email"
      >
    </div>

    <button type="submit">Submit</button>
  </form>
</template>

Как только вы это сделаете, это все равно не сработает. Вы должны зайти в свою административную панель netlify и найти настройки сайтаСборка и развертываниеНастройки сборкиРедактировать настройки и в поле команды сборки вы должны использовать npm run generate вместо npm run build. Это позволит netlify обнаружить форму, и все будет готово.

Причина, по которой это происходит, заключается в том, что когда вы запускаете команду npm run generate, во время сборки создается html-файл для каждого маршрута в вашем приложении. Если есть какие-либо запросы на выборку, которые выполняются во время сборки, эти данные извлекаются и отображаются в html. Вот почему он называется статическим сайтом. Итак, поскольку данные были загружены во время сборки, и все запросы на выборку были обработаны тогда, почему страница становится пустой при обновлении?

Это происходит в конце netlify, всякий раз, когда вы обновляете, вы можете видеть, что он добавляет косую черту в конце URL-адреса и пытается снова получить содержимое. Но так как он статичен, это не работает. Вот почему вы должны снова зайти в свои настройки на netlify.

В настройках сайта необходимо перейти на вкладку сборка и развертывание слева. Продолжайте прокручивать вниз, пока не найдете постобработка. В разделе Оптимизация объектов вам нужно нажать изменить настройки. Нажмите переключатель с надписью Включить оптимизацию ресурсов, снимите все флажки и нажмите «Сохранить».

Если вам понравилась эта статья, пожалуйста, дайте мне знать в комментариях, о чем вы хотели бы услышать дальше. Я пишу статьи на cpectre.com, в том числе связанные с shopify и vue, а также разные советы по javascript.