React Query er et hjelpemiddel til å håndtere server-tilstand i en frontend-applikasjon.
Å håndtere data fra en server har flere utfordringer. Det er i sin natur asynkront, med sine utfordringer for henting og oppdatering. Vi har jo heller ikke full kontroll på data fra en server – andre kan endre på de, og data tenderer til å ende opp som utdatert.
Å håndtere server data er definitivt mer komplisert enn å håndtere lokale data i en app.
React Query har en elegant løsning på dette problemet, synes vi:
const Example = (id) => {
const { isLoading, error, data } = useQuery(['exampleData', id], () =>
fetch('https://example.com/data/'+id)
.then((res) => res.json())
);
if (isLoading) return <Loading/>;
if (error) return <Error message={error.message}/>;
return (
<div>
<h1>{data.name}</h1>
<div>
)
}
Selv om koden ser enkelt ut, får man mye på kjøpet.
- Caching. Full kontroll på cache stale time etc
- Flere komponenter kan derfor hente de samme dataene uten at dette vil resultere i flere requester. Dette igjen gjør at man ikke forholder seg til global state, bare til resultatet av queries/mutations.
- Transport agnostisk (du gjør selv dine fetch/graphql/promise etc)
- Automatisk flere forsøk før det feiler
- Opplegg for transformering av data
- God støtte for muteringer av data samt evt optimistisk oppdatering av data lokalt
- Og mye mer. Se feature list