Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser persistQueryClient dans React-Query ?

<p>J'utilise React Query pour effectuer des appels API, mais lorsque je recharge la page, l'état est perdu. J'ai posté une question sur Stack Overflow demandant s'il existait un moyen de conserver les données dans la requête de réaction et quelqu'un a répondu que cela pouvait être fait en utilisant persistQueryClient, mais j'ai essayé de lire la documentation et je ne comprends toujours pas comment cela fonctionne. Quelqu'un peut-il expliquer cela ? </p><p>Vous pouvez vous référer au lien suivant pour en savoir plus sur persistQueryClient : https://tanstack.com/query/v4/docs/react/plugins/persistQueryClient</p><p>< ;br /></p>
P粉908643611P粉908643611472 Il y a quelques jours510

répondre à tous(1)je répondrai

  • P粉176980522

    P粉1769805222023-07-28 10:23:22

    persistQueryClient est un wrapper autour du queryClient standard qui conserve le cache sur un support de stockage, tel que localStorage.

    Pour définir et conserverQueryClient, nous avons besoin de :

    1. Créer un client de requête avec un temps de cache long.

    2. Créez un persistant.

    3. Enveloppez le client de requête et persistez dans persistQueryClient.

    Voici les exemples fournis par la documentation :

    import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'
    import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'
    
    // 1. the query client
    const queryClient = new QueryClient({
      defaultOptions: {
        queries: {
          cacheTime: 1000 * 60 * 60 * 24, // 24 hours
        },
      },
    })
    
    // 2. the persister
    const persister = createSyncStoragePersister({
      storage: window.localStorage,
    })
    
    // 3. Replace the <QueryClientProvider> with <PersistQueryClientProvider>
    ReactDOM.createRoot(rootElement).render(
      <PersistQueryClientProvider
        client={queryClient}
        persistOptions={{ persister }}
      >
        <App />
      </PersistQueryClientProvider>
    ) 

    répondre
    0
  • Annulerrépondre