Только нужные пропсы в Inertia
Пусть на экране списка пользователей
лежат и сами записи, и длинный
справочник компаний для фильтра.
При смене фильтра компании
не меняются, а пересчитывается
только массив users.
Тянуть оба пропса снова -
лишняя работа для сервера
и браузера.
У визита есть опция only:
массив имён пропсов, которые
нужны в ответе. Inertia сольёт
их с тем, что уже хранит
на клиенте. На сервере значения
удобно отдавать замыканием,
чтобы неиспользуемый пропс
вообще не считался.
Давайте отдадим пользователей и компании двумя замыканиями:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/users', function () {
return Inertia::render('Users/Index', [
'users' => fn () => ['Anna', 'Boris'],
'companies' => fn () => ['Acme', 'Globex'],
]);
});
?>
Давайте обновим список,
запросив только пропс users:
<script setup>
import { router } from '@inertiajs/vue3'
defineProps({
users: Array,
companies: Array,
})
function refreshUsers() {
router.get('/users', {}, {
only: ['users'],
})
}
</script>
<template>
<button type="button" @click="refreshUsers">
Refresh users
</button>
<ul>
<li v-for="user in users" :key="user">
{{ user }}
</li>
</ul>
<p v-for="company in companies" :key="company">
{{ company }}
</p>
</template>
Сделайте экран отдела HR
с пропсами workers
и shifts так, чтобы
кнопка обновляла только
список работников.