Кнопка на время отправки в Inertia
Представим, что человек дважды нажимает «Save», пока запрос ещё не завершился. На сервер уходят дубликаты, а на экране непонятно, идёт ли отправка.
Свойство processing
у объекта формы истинно,
пока Inertia ждёт ответ
на текущую отправку.
Его связывают с атрибутом
disabled у кнопки,
чтобы повторный клик
не отправил форму снова.
Давайте опишем адрес формы и приём полей:
<?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) {
return back();
});
?>
Давайте отключим кнопку на время отправки:
<script setup>
import { useForm } from '@inertiajs/vue3'
const form = useForm({
title: '',
})
function submit() {
form.post('/posts')
}
</script>
<template>
<form @submit.prevent="submit">
<input
type="text"
v-model="form.title"
/>
<button
type="submit"
:disabled="form.processing"
>
Save
</button>
</form>
</template>
Сделайте форму работника Sam так, чтобы кнопка сохранения не нажималась повторно, пока запрос не завершился.