Опрос выбранных пропсов в Inertia
Пусть на экране ленты постов лежит и сам список, и блок с числом непрочитанных уведомлений. Список тяжёлый, а счётчик меняется часто. При каждом опросе тянуть оба пропса снова - лишняя нагрузка, хотя на экране нужно обновить только цифру.
У хелпера usePoll второй
аргумент принимает те же
опции, что и перечитывание
через router. Опция
only с массивом имён
просит сервер вернуть
лишь указанные пропсы,
остальное на клиенте
остаётся как было.
Давайте отдадим посты и счётчик двумя замыканиями:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts', function () {
return Inertia::render('Posts/Index', [
'posts' => fn () => [
['id' => 1, 'title' => 'Launch'],
['id' => 2, 'title' => 'Update'],
],
'unread' => fn () => random_int(0, 9),
]);
});
?>
Давайте выведем ленту
и подключим опрос только
для пропса unread:
<script setup>
import { usePoll } from '@inertiajs/vue3'
defineProps({
posts: Array,
unread: Number,
})
usePoll(4000, {
only: ['unread'],
})
</script>
<template>
<p>Unread: {{ unread }}</p>
<ul>
<li v-for="post in posts" :key="post.id">
{{ post.title }}
</li>
</ul>
</template>
Сделайте страницу работников
Warehouse с пропсами crew
и queue_size так,
чтобы при опросе каждые
шесть секунд менялся
только размер очереди,
а список crew на экране
не пересчитывался заново.