Повторный запрос страницы в Inertia
Давайте рассмотрим ситуацию,
когда человек сидит на адресе
списка постов и хочет подтянуть
свежие строки той же страницы.
Писать адрес вручную в метод
get неудобно: он уже
открыт, а меняются лишь пропсы
в ответе.
Метод reload у объекта
router делает визит
на текущий URL. В опциях
можно снова указать only
или except. По умолчанию
reload сам включает
сохранение состояния и прокрутки,
что удобно для кнопки «обновить
данные здесь».
Давайте отдадим список постов:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts', function () {
return Inertia::render('Posts/Index', [
'posts' => fn () => ['Alpha', 'Beta'],
]);
});
?>
Давайте повесим на кнопку
повторный запрос только
пропса posts:
<script setup>
import { router } from '@inertiajs/vue3'
defineProps({
posts: Array,
})
function reloadPosts() {
router.reload({ only: ['posts'] })
}
</script>
<template>
<button type="button" @click="reloadPosts">
Reload posts
</button>
<ul>
<li v-for="post in posts" :key="post">
{{ post }}
</li>
</ul>
</template>
Сделайте список смен работника
Kira с кнопкой, которая снова
запрашивает текущий адрес
и обновляет только пропс
shifts.