Skip to content
Документация
API

API

const { data, error, isLoading, isValidating, mutate } = useSWR(key, fetcher, options)

Параметры

Возвращаемые значения

  • data: данные для данного ключа, разрешенные fetcher (или undefined, если не загружено)
  • error: ошибка, выброшенная fetcher-ом (или undefined)
  • isLoading: если есть текущий запрос и нет «загруженных данных». Резервные данные и предыдущие данные не считаются «загруженными данными»
  • isValidating: если запрос или ревалидация загружается
  • mutate(data?, options?): функция для мутации закешированных данных (подробнее)

Более подробно можно почитать здесь.

Опции

  • suspense = false: включить режим задержки React Suspense (подробнее)
  • fetcher(args): функция-fetcher
  • revalidateIfStale = 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 секунд.

Вы также можете использовать глобальную конфигурацию для предоставления параметров по умолчанию.