РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnuPmFmFP 82 of 84 menu
◀ ▶

Ожидание отправки в Nuxt

Запрос к API занимает время. Пока ответ не пришёл, пользователь может нажать кнопку ещё раз и отправить дубликаты. Интерфейс должен показать, что сохранение идёт, и временно отключить кнопку.

Для этого заводят флаг в ref: перед $fetch ставят true, после завершения запроса - false в блоке finally, чтобы сброс сработал и при ошибке.

Серверная часть для заметки:

export default defineEventHandler(async (event) => { const body = await readBody(event); const title = body.title?.trim(); if (!title) { setResponseStatus(event, 400); return { message: 'Title is required' }; } return { title }; });

На странице свяжем флаг pending с атрибутом disabled у кнопки и сменим подпись на Saving на время запроса:

<script setup> const title = ref(''); const pending = ref(false); async function submitForm() { pending.value = true; try { await $fetch('/api/notes', { method: 'POST', body: { title: title.value }, }); } finally { pending.value = false; } } </script> <template> <form @submit.prevent="submitForm"> <input v-model="title" type="text"> <button type="submit" :disabled="pending"> {{ pending ? 'Saving' : 'Save' }} </button> </form> </template>

Сделайте форму заказа, в которой кнопка отправки неактивна, пока выполняется запрос к API.

Покажите на кнопке текст Saving на время сохранения заказа.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить