Пропс в каждом ответе в Inertia
Давайте теперь представим фильтр постов: список записей клиент может обновлять снова и снова, а блок подсказок слева должен не пропадать, когда запрос касается только списка.
Метод always помечает пропс
так, что он попадает в ответ
при каждом визите на эту страницу,
даже если клиент явно назвал
другие имена полей. Остальные
пропсы по-прежнему можно отдавать
замыканием и не пересчитывать
без нужды.
Давайте отдадим посты замыканием,
а подсказки обернём в always:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts', function () {
return Inertia::render('Posts/Index', [
'posts' => fn () => ['Alpha', 'Beta'],
'hints' => Inertia::always([
'Use filters on the right',
'Click a row for details',
]),
]);
});
?>
Давайте обновим на экране только
пропс posts и проверим,
что hints остаётся на месте:
<script setup>
import { router } from '@inertiajs/vue3'
defineProps({
posts: Array,
hints: Array,
})
function refreshPosts() {
router.reload({ only: ['posts'] })
}
</script>
<template>
<aside>
<p v-for="hint in hints" :key="hint">
{{ hint }}
</p>
</aside>
<ul>
<li v-for="post in posts" :key="post">
{{ post }}
</li>
</ul>
<button type="button" @click="refreshPosts">
Refresh posts
</button>
</template>
Сделайте панель работника
Helena, где список tasks
можно обновить кнопкой,
а пропс notices с текстом
напоминания остаётся видимым
после этого обновления.