Как вызвать состояние загрузки после того, как данные пришли один раз в SWR?

У меня есть табличный компонент, как на картинке. Справа вверху есть кнопка обновления. Когда пользователь нажимает на нее, я обновляю таблицу с помощью mutate(), но isLoading не становится истинным, поэтому счетчик загрузки не отображается. Я хочу, чтобы пользователь знал, что таблица обновляет данные, показывая индикатор загрузки.

Моя текущая строка для получения данных:

const { data: originalData, isLoading, mutate } = useSWR(fetch-table, fetcher);

Табличный компонент:

Есть ли способ сделать isLoading истинным после того, как данные пришли один раз?

🤔 А знаете ли вы, что...
JavaScript имеет множество встроенных объектов, таких как Array, Date и Math.


1
245
2

Ответы:

Наверное mutate ничего не делать из-за кеша, попробуйте проверить в браузере. Кроме того, вы можете указать параметры управления кешем для функции mutate. Проверьте раздел повторной проверки в документации здесь: https://swr.vercel.app/docs/mutation#api


Решено

В SWR есть функция cache.delete. Нам нужно удалить кеш, чтобы снова увидеть состояние загрузки.

import useSWR, { useSWRConfig } from 'swr';
    
const { data: originalData, isLoading, mutate } = useSWR("fetch-table", fetcher);    
const { cache } = useSWRConfig();    

const onRefresh = () => {
  cache.delete("fetch-table") //fetch-table is your req key.
  mutate();
}