Configuration Globale
Le contexte SWRConfig
peut fournir des configurations globales (options) pour tous les hooks SWR.
<SWRConfig value={options}>
<Component/>
</SWRConfig>
Dans cet exemple, tous les hooks SWR utiliseront le même fetcher fourni pour charger des données JSON, et se rafraîchiront toutes les 3 secondes par défaut :
import useSWR, { SWRConfig } from 'swr'
function Dashboard () {
const { data: events } = useSWR('/api/events')
const { data: projects } = useSWR('/api/projects')
const { data: user } = useSWR('/api/user', { refreshInterval: 0 }) // override
// ...
}
function App () {
return (
<SWRConfig
value={{
refreshInterval: 3000,
fetcher: (resource, init) => fetch(resource, init).then(res => res.json())
}}
>
<Dashboard />
</SWRConfig>
)
}
Configuration imbriquées
SWRConfig
fusionne la configuration du contexte parent. Il peut recevoir soit un objet, soit une configuration fonctionnelle. La configuration fonctionnelle reçoit la configuration parent en argument et renvoie une nouvelle configuration que vous pouvez personnaliser vous-même.
Exemple de configuration d'objet
import { SWRConfig, useSWRConfig } from 'swr'
function App() {
return (
<SWRConfig
value={{
dedupingInterval: 100,
refreshInterval: 100,
fallback: { a: 1, b: 1 },
}}
>
<SWRConfig
value={{
dedupingInterval: 200, // remplacera la valeur mère puisque qu'elle est primitive
fallback: { a: 2, c: 2 }, // fussionera avec la valeur mère puisque qu'elle est un objet fussionnable
}}
>
<Page />
</SWRConfig>
</SWRConfig>
)
}
function Page() {
const config = useSWRConfig()
// {
// dedupingInterval: 200,
// refreshInterval: 100,
// fallback: { a: 2, b: 1, c: 2 },
// }
}
Exemple de configuration fonctionnelle
import { SWRConfig, useSWRConfig } from 'swr'
function App() {
return (
<SWRConfig
value={{
dedupingInterval: 100,
refreshInterval: 100,
fallback: { a: 1, b: 1 },
}}
>
<SWRConfig
value={parent => ({
dedupingInterval: parent.dedupingInterval * 5,
fallback: { a: 2, c: 2 },
})}
>
<Page />
</SWRConfig>
</SWRConfig>
)
}
function Page() {
const config = useSWRConfig()
// {
// dedupingInterval: 500,
// fallback: { a: 2, c: 2 },
// }
}
API supplémentaires
Fournisseur de cache
En plus de toutes les options répertoriées, SWRConfig
accepte également une fonction provider
facultative. Veuillez vous référer à la section Cache pour plus de détails.
<SWRConfig value={{ provider: () => new Map() }}>
<Dashboard />
</SWRConfig>
Accès aux configurations globales
Vous pouvez utiliser le hook useSWRConfig
pour obtenir les configurations globales, ainsi que mutate
et cache
:
import { useSWRConfig } from 'swr'
function Component () {
const { refreshInterval, mutate, cache, ...restConfig } = useSWRConfig()
// ...
}
La configuration imbriquée sera étendue. Si aucun <SWRConfig>
n'est utilisé, il renverra les configurations par défaut.