РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗ppinSpPtGr 22 of 112 menu
◀ ▶

Группа отложенных пропсов в Inertia

Пусть на странице пользователей есть три тяжёлых справочника и ещё один блок прав, который логичнее грузить отдельно. Если каждый отложенный пропс уходит своим запросом, сеть забивается мелкими походами. Inertia умеет склеивать догрузку по имени группы.

У метода defer второй аргумент - строка с названием группы. Пропсы с одним именем группы попадают в один запрос после первого экрана, а пропс без группы или с другим именем уезжает параллельно своей пачкой.

Давайте отдадим права отдельно, а команды и проекты в группе attributes:

<?php use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/users', function () { return Inertia::render('Users/Index', [ 'users' => ['Anna', 'Boris'], 'permissions' => Inertia::defer( fn () => ['edit'], ), 'teams' => Inertia::defer( fn () => ['Alpha'], 'attributes', ), 'projects' => Inertia::defer( fn () => ['Site'], 'attributes', ), ]); }); ?>

Давайте покажем каждый блок, когда его пропс уже на месте:

<script setup> defineProps({ users: Array, permissions: Array, teams: Array, projects: Array, }) </script> <template> <ul> <li v-for="user in users" :key="user"> {{ user }} </li> </ul> <p v-if="permissions"> Permissions: {{ permissions.join(', ') }} </p> <p v-if="teams"> Teams: {{ teams.join(', ') }} </p> <p v-if="projects"> Projects: {{ projects.join(', ') }} </p> </template>

Сделайте экран работника, где навыки и значки догружаются одним поздним запросом, а расписание приходит отдельно.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить