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

Повтор при появлении в Inertia

Давайте рассмотрим ситуацию, когда человек листает длинную ленту: блок с ценами уходит вверх за край экрана, потом снова возвращается при прокрутке назад. Если WhenVisible уже срабатывал, по умолчанию он больше не дергает сервер, хотя цифры на складе за это время могли измениться.

Атрибут always включает режим, при котором каждый новый заход блока в область видимости снова запускает загрузку указанного пропса. Слот fallback по-прежнему относится к первому показу, а для следующих запросов удобен слот с флагом fetching в основном содержимом.

Давайте отдадим ленту и отложенную котировку:

<?php use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/market', function () { return Inertia::render('Market/Feed', [ 'items' => ['News', 'Chart', 'Notes'], 'quote' => Inertia::defer( fn () => [ 'symbol' => 'ACME', 'price' => random_int(90, 110), ], ), ]); }); ?>

Давайте обернём котировку в WhenVisible с атрибутом always:

<script setup> import { WhenVisible } from '@inertiajs/vue3' defineProps({ items: Array, quote: Object, }) </script> <template> <ul> <li v-for="item in items" :key="item"> {{ item }} </li> </ul> <div class="spacer">Keep scrolling</div> <WhenVisible data="quote" always> <template #default="{ fetching }"> <p>{{ quote.symbol }}: {{ quote.price }}</p> <p v-if="fetching">Refreshing...</p> </template> <template #fallback> <p>Loading quote...</p> </template> </WhenVisible> </template>

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

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