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

Бесконечный список в Inertia

Давайте посмотрим на компонент InfiniteScroll. Он оборачивает ленту, где вместо кнопки следующей страницы человек просто крутит экран вниз. Когда до конца списка остаётся немного пикселей, клиент сам запрашивает следующую страницу пагинации и дописывает строки к уже показанным.

Атрибут data указывает имя пропса с постраничным объектом Laravel. Без обёртки scroll у класса Inertia на сервере компонент не знает, как сливать ответы, поэтому пропс отдают внутри замыкания с этим методом.

Давайте отдадим посты через scroll и пагинацию:

<?php use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/posts', function () { return Inertia::render('Posts/Index', [ 'posts' => Inertia::scroll(function () { $all = [ ['id' => 1, 'title' => 'Alpha'], ['id' => 2, 'title' => 'Beta'], ['id' => 3, 'title' => 'Gamma'], ['id' => 4, 'title' => 'Delta'], ]; $page = request()->integer('page', 1); $perPage = 2; $slice = array_slice( $all, ($page - 1) * $perPage, $perPage, ); return new LengthAwarePaginator( $slice, count($all), $perPage, $page, ); }), ]); }); ?>

Давайте обернём список в InfiniteScroll и выведем поле data:

<script setup> import { InfiniteScroll } from '@inertiajs/vue3' defineProps({ posts: Object, }) </script> <template> <InfiniteScroll data="posts"> <ul> <li v-for="post in posts.data" :key="post.id" > {{ post.title }} </li> </ul> </InfiniteScroll> </template>

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

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