javascript - SWR: Validera föråldrade resurser utan att hämta om vid varje montering
Jag använder SWR med en globalt konfigurerad axios-hämtare på detta sätt
<SWRConfig
value={{
fetcher: getFetcher,
}}
> ...
Jag vill inte hämta om vid varje komponentmontering, så jag har inaktiverat revalidateIfStale. Hittills så bra.
Ibland vill jag validera en nyckel på nytt (hämta färsk data i bakgrunden utan att visa en laddningsstatus) och för detta kan jag använda mutate från useSWR-hooken eller till och med bara importera mutate direkt från SWR. Hittills så gott.
Nu är problemet när resursen i fråga laddas vid någon tidpunkt, men inte för närvarande är monterad. mutate gör då ingenting, vilket tekniskt sett är logiskt eftersom det förmodligen inte vet vad det ska göra, men utifrån hur jag vill att det ska fungera suger det verkligen att jag som utvecklare måste veta om en viss resurs för närvarande är monterad eller inte för att kunna välja rätt metod för att ogiltigförklara cachen.
Hur kan jag få SWR att cachelagra saker utan att validera om varje gång den monteras samtidigt som jag fortfarande har ett enkelt sätt att ogiltigförklara resurser? Jag inser att det låter som att jag vill att invalidateIfStale ska vara sant, och kanske vill jag det. Men jag vill inte att resurser ska hämtas vid varje montering.
Vilka alternativ har jag?
Tack 🙏