Hooks
usePolling
Периодический опрос с паузой в фоне и догоном при возврате.
Периодический опрос — для значений, ради которых не стоит держать постоянное соединение: счётчик непрочитанных, статус фоновой задачи, число участников онлайн.
Пример
—
Опрос каждые 3 секунды. Переключитесь на другую вкладку и вернитесь — время обновится сразу, а не через интервал.
import { usePolling } from "@toimetdev/pathlogs-hooks";
const { data: count, refresh } = usePolling(
async () => {
const res = await fetch("/api/notifications/unread-count", { cache: "no-store" });
const json = await res.json();
return json.count as number;
},
{ initial: unreadFromServer, interval: 30_000 }
);Начальное значение приходит с сервера, поэтому счётчик показывает правду с первого кадра, а не мигает нулём до первого запроса.
Параметры
| Проп | Тип | По умолчанию | Описание |
|---|---|---|---|
fetcher* | () => Promise<T> | — | Что запрашивать. Ошибки проглатываются — попробуем в следующий раз. |
initial* | T | — | Значение до первого успешного запроса. Обычно приходит с сервера. |
interval | number | 30000 | Период опроса в миллисекундах. |
pauseWhenHidden | boolean | true | Не опрашивать, пока вкладка в фоне. Значение в невидимой вкладке никто не читает. |
immediate | boolean | false | Опросить сразу при монтировании, не дожидаясь первого интервала. |
enabled | boolean | true | Выключить опрос, не снимая хук. |
fetcher*() => Promise<T>Что запрашивать. Ошибки проглатываются — попробуем в следующий раз.
initial*TЗначение до первого успешного запроса. Обычно приходит с сервера.
intervalnumberпо умолчанию: 30000
Период опроса в миллисекундах.
pauseWhenHiddenbooleanпо умолчанию: true
Не опрашивать, пока вкладка в фоне. Значение в невидимой вкладке никто не читает.
immediatebooleanпо умолчанию: false
Опросить сразу при монтировании, не дожидаясь первого интервала.
enabledbooleanпо умолчанию: true
Выключить опрос, не снимая хук.
Возвращает { data, refresh }. refresh дёргает тот же путь, что и таймер, — одна точка входа, одна политика.
Когда опрос, а когда поток
- Опрос — когда значение маленькое, меняется редко и задержка в десятки секунд никого не расстроит. Не требует ничего от сервера, кроме обычного эндпоинта.
- Поток (
useEventStream) — когда изменение должно долетать за секунды и его видят несколько человек сразу: доска, комментарии, совместное редактирование.
Держать открытое соединение ради числа в углу экрана — плохая сделка: соединений столько же, сколько вкладок, а пользы на копейку.