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

Завершение запроса в Inertia

Допустим, надпись «Loading…» уже включается глобальным слушателем start. Если гасить её только по success, после ошибки проверки экран так и останется в состоянии ожидания, хотя запрос давно завершился.

Событие finish приходит, когда Ajax-запрос Inertia полностью закончился: и после удачного ответа, и после ответа с ошибками проверки. Его удобно парировать с start: один слушатель включает индикатор, другой всегда его выключает.

Давайте вернём ошибку, если заголовок пустой:

<?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/posts/create', function () { return Inertia::render('Posts/Create'); }); Route::post('/posts', function (Request $request) { $request->validate([ 'title' => 'required', ]); return back(); }); ?>

Давайте допишем слушатель finish рядом с уже заведённым флагом ожидания:

import { router } from '@inertiajs/vue3' import { ref } from 'vue' export const visitPending = ref(false) router.on('start', () => { visitPending.value = true }) router.on('finish', () => { visitPending.value = false })

Давайте покажем форму и общий индикатор:

<script setup> import { Form } from '@inertiajs/vue3' import { visitPending } from '../../app.js' </script> <template> <h1>New post</h1> <p v-if="visitPending"> Loading… </p> <Form action="/posts" method="post"> <input type="text" name="title" /> <button type="submit">Save</button> </Form> </template>

Сделайте отправку карточки работника Nina так, чтобы общий индикатор ожидания пропадал и после успеха, и после ошибки проверки полей.

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