Опрос в Inertia
Давайте познакомимся с хелпером
usePoll. Он подключается
из пакета @inertiajs/vue3
и раз в заданный интервал
запускает перечитывание
текущей страницы - тот же
ответ сервера, что и при
первом заходе на адрес.
Пропсы на экране подменяются
свежими значениями без
полной перезагрузки сайта.
Единственный обязательный аргумент - интервал в миллисекундах. Хелпер стартует, когда компонент смонтирован, и сам останавливается, если человек ушёл со страницы. Так удобно держать на экране живую цифру или метку времени, которую сервер пересчитывает при каждом опросе.
Давайте отдадим метку обновления с сервера:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/dashboard', function () {
return Inertia::render('Dashboard', [
'refreshed_at' => now()->toDateTimeString(),
]);
});
?>
Давайте выведем метку и подключим опрос с интервалом три секунды:
<script setup>
import { usePoll } from '@inertiajs/vue3'
defineProps({
refreshed_at: String,
})
usePoll(3000)
</script>
<template>
<p>Updated: {{ refreshed_at }}</p>
</template>
Сделайте страницу работников
Office с пропсом synced_at,
чтобы метка на экране
сама обновлялась каждые
пять секунд, пока открыта
страница.