Skip to content
Docs
Auto Revalidation

Auto Revalidation

💡

Si vous voulez revalider manuellement les données, consultez mutation.

Revalider lors du Focus

Lorsque vous retournez sur une page ou que vous passez d'un onglet à un autre, SWR revalide automatiquement les données.

Cela peut être utile pour synchroniser immédiatement avec l'état le plus récent. Cela est utile pour rafraîchir les données dans des scénarios comme les onglets mobiles obsolètes, ou les ordinateurs portables qui se sont mis en veille.

Video: Utilisation la revalidation pour synchroniser automatiquement l'état de connexion entre les pages.

Cet fonctionnalité est activée par défaut. Vous pouvez la désactiver via l'option revalidateOnFocus.

Révalider avec un Intervalle

Dans de nombreux cas, les données changent en raison de plusieurs appareils, plusieurs utilisateurs, plusieurs onglets. Comment pouvons-nous mettre à jour les données à l'écran au fil du temps ?

SWR vous donne l'option de revalider automatiquement les données. C'est intelligent, ce qui signifie que la revalidation ne se produira que si le composant associé au hook est sur l'écran.

Video: lorsq'un utilisateur effectue une modification, toutes les sessions restituent les même données.

Vous pouvez l'activer en définissant une valeur refreshInterval :

useSWR('/api/todos', fetcher, { refreshInterval: 1000 })

Il y a aussi des options comme refreshWhenHidden et refreshWhenOffline. Les deux sont désactivés par défaut, donc SWR ne fera pas de requête lorsque la page web n'est pas à l'écran, ou qu'il n'y a pas de connexion réseau.

Revalider à la Reconnexion

Il est également utile de revalider lorsque l'utilisateur est à nouveau en ligne. Ce scénario se produit souvent lorsque l'utilisateur déverrouille son ordinateur, mais que l'internet n'est pas encore connecté.

Pour être sûr que les données sont toujours à jour, SWR se revalide automatiquement lorsque le réseau se rétablit.

Cet fonctionnalité est activée par défaut. Vous pouvez la désactiver via l'option revalidateOnReconnect.

Désactiver la Revalidation Automatique

Si la ressource est immuable, elle ne changera jamais si nous la revalidons à nouveau, nous pouvons désactiver toutes sortes de revalidations automatiques pour celle-ci.

Depuis la version 1.0, SWR fournit un hook d'aide useSWRImmutable pour marquer la ressource comme immuable :

import useSWRImmutable from 'swr/immutable'
 
// ...
useSWRImmutable(key, fetcher, options)

C'est la même interface API que le hook useSWR normal. Vous pouvez également faire la même chose en désactivant les options de revalidation suivantes :

useSWR(key, fetcher, {
  revalidateIfStale: false,
  revalidateOnFocus: false,
  revalidateOnReconnect: false
})
 
// équivalent à
useSWRImmutable(key, fetcher)

revalidateIfStale contrôle si SWR doit revalider lorsqu'il est monté et qu'il y a des données obsolètes.

Ces 2 hooks ci-dessus font exactement la même chose. Une fois que les données sont mises en cache, elles ne les demanderont plus jamais.