Сброс кэша в Inertia
Допустим, список постов уже лежит в кэше предзагрузки, а редактор только что добавил новую запись. Пока кэш жив, человек может увидеть старый набор, хотя на сервере данные уже другие.
Клиент Inertia умеет сбрасывать
сохранённый ответ для конкретного
визита. Метод flush
у router принимает тот
же адрес и параметры, что
и при предзагрузке или заходе:
после вызова следующий переход
или наведение снова запросит
свежие данные с Laravel.
Давайте опишем список и приём новой записи:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts', function () {
return Inertia::render('Posts/Index', [
'title' => 'Posts',
]);
});
Route::post('/posts', function (Request $request) {
$request->validate([
'title' => 'required',
]);
return back();
});
?>
Давайте после сохранения сбросим кэш для списка:
<script setup>
import { ref } from 'vue'
import { router } from '@inertiajs/vue3'
const title = ref('')
function save() {
router.post('/posts', {
title: title.value,
}, {
onSuccess: () => {
router.flush('/posts', {
method: 'get',
})
},
})
}
</script>
<template>
<h1>New post</h1>
<input v-model="title" type="text">
<button type="button" @click="save">
Save
</button>
</template>
После добавления работника Kate сбросьте предзагрузку для экрана списка работников.