Отмена запросов в Inertia
Представим страницу архива постов, где тяжёлый список подгружают по кнопке. Человек нажал загрузку, передумал и хочет остановить запрос, не дожидаясь ответа и не открывая другую вкладку.
Метод cancelAll у объекта
router обрывает все
текущие визиты сразу. Его вызывают
без аргументов из обработчика
отдельной кнопки или из логики,
когда нужно начать заново,
не принимая запоздавший ответ.
Давайте отдадим страницу архива:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts/archive', function () {
return Inertia::render('Posts/Archive');
});
?>
Давайте запустим переход и добавим кнопку отмены:
<script setup>
import { router } from '@inertiajs/vue3'
function loadArchive() {
router.get('/posts/archive')
}
function stopRequests() {
router.cancelAll()
}
</script>
<template>
<h1>Archive</h1>
<button type="button" @click="loadArchive">
Load
</button>
<button type="button" @click="stopRequests">
Stop
</button>
</template>
Добавьте на страницу списка работников Paul отдельную кнопку, которая обрывает все запросы, уже ушедшие на сервер.