API
const { data, error, isLoading, isValidating, mutate } = useSWR(key, fetcher, options)
Параметры
key
: уникальный строчный ключ для запроса (или функция / массив / null) (подробнее), (продвинутое использование)fetcher
: (опционально) Promise возвращающий функцию для выборки данных (подробнее)options
: (опционально) объект опций для этого SWR хука
Возвращаемые значения
data
: данные для данного ключа, разрешенныеfetcher
(или undefined, если не загружено)error
: ошибка, выброшеннаяfetcher
-ом (или undefined)isLoading
: если есть текущий запрос и нет «загруженных данных». Резервные данные и предыдущие данные не считаются «загруженными данными»isValidating
: если запрос или ревалидация загружаетсяmutate(data?, options?)
: функция для мутации закешированных данных (подробнее)
Более подробно можно почитать здесь.
Опции
suspense = false
: включить режим задержки React Suspense (подробнее)fetcher(args)
: функция-fetcherrevalidateIfStale = true
: автоматически ревалидировать, даже если есть устаревшие данные (подробнее)revalidateOnMount
: включить или отключить автоматическую ревалидацию при монтировании компонента (details)revalidateOnFocus = true
: автоматически ревалидировать, когда окно фокусируется (подробнее)revalidateOnReconnect = true
: автоматически ревалидировать, когда браузер восстанавливает сетевое подключение (черезnavigator.onLine
) (подробнее)refreshInterval
(подробнее):- По умолчанию отключен:
refreshInterval = 0
- Если установлено числовое значение, интервал поллинга в миллисекундах
- Если установлено значение функции, функция будет получать последние данные и должна возвращать интервал в миллисекундах
- По умолчанию отключен:
refreshWhenHidden = false
: поллинг, когда окно невидимо (еслиrefreshInterval
включён)refreshWhenOffline = false
: поллинг, когда браузер оффлайн (определяетсяnavigator.onLine
)shouldRetryOnError = true
: повторить попытку, если в fetcher-е возникла ошибкаdedupingInterval = 2000
: дедупликация запросов с тем же ключом за этот промежуток времени в миллисекундахfocusThrottleInterval = 5000
: проверять только один раз за период времени в миллисекундахloadingTimeout = 3000
: тайм-аут для запуска события onLoadingSlow в миллисекундахerrorRetryInterval = 5000
: интервал повторной попытки ошибки в миллисекундахerrorRetryCount
: максимальное количество повторных попыток при ошибкеfallback
: объект типа "ключ-значение" из нескольких резервных данных (пример)fallbackData
: исходные данные, которые должны быть возвращены (примечание: это для каждого хука)keepPreviousData = false
: возвращать данные предыдущего ключа, пока не будут загружены новые данные (подробнее)onLoadingSlow(key, config)
: колбэк-функция, когда запрос загружается слишком долго (см.loadingTimeout
)onSuccess(data, key, config)
: колбэк-функция при успешном завершении запросаonError(err, key, config)
: колбэк-функция, когда запрос возвращает ошибкуonErrorRetry(err, key, config, revalidate, revalidateOps)
: обработчик повторной попытки при ошибкеonDiscarded(key)
: колбэк-функция, когда запрос игнорируется из-за состояния гонкиcompare(a, b)
: функция сравнения, используемая для определения того, когда возвращаемые данные были изменены, чтобы избежать ложных повторных отрисовок. По умолчанию используется stable-hash (opens in a new tab).isPaused()
: функция, определяющая, приостанавливается ли ревалидация, игнорирует полученные данные и ошибки, когда возвращаетtrue
. По умолчанию возвращаетfalse
.use
: массив middleware-функций (подробнее)
💡
В медленной сети (2G, <= 70 Кбит/с), errorRetryInterval
будет 10 секунд,
а loadingTimeout
будет по умолчанию 5 секунд.
Вы также можете использовать глобальную конфигурацию для предоставления параметров по умолчанию.