Успешный переход в Inertia
Давайте теперь сохраним заголовок поста и сразу после удачного ответа покажем человеку короткую надпись, не дожидаясь, пока он заметит смену пропсов на странице.
У визита есть колбэк
onSuccess в третьем
аргументе метода post.
Он срабатывает, когда Laravel
вернул успешный ответ Inertia.
Туда удобно записать текст
в локальный ref Vue
и вывести его в шаблоне.
Давайте примем сохранение и вернём на ту же страницу:
<?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 { ref } from 'vue'
import { router } from '@inertiajs/vue3'
const notice = ref('')
function save() {
router.post('/posts', {}, {
onSuccess: () => {
notice.value = 'Saved'
},
})
}
</script>
<template>
<h1>New post</h1>
<button type="button" @click="save">
Save
</button>
<div v-if="notice">
{{ notice }}
</div>
</template>
После удачного сохранения работника Olga выведите на экран короткую надпись об успехе из локального состояния Vue.