React Query

Introduction

  • The library to handle data fetching, including retry, caching, error handling, so as to reduce the boilerplate code

  • Convenient to create custom hook to fetching or updating data in order to achieve separate of concern

Fresh & Stale State

  • Fresh: all the data must come from cache, no background refetching will be happened

  • Stale: data can still come from cache, but the background refetching can be happened

Default Behavior

  • Stale queries are refetched automatically in the background when:

    • New instances of the query mount

    • The window is refocused

    • The network is reconnected.

    • The query is optionally configured with a refetch interval.

  • If Query fails, will silently retry 3 times

  • The data of the inactive queries will be cached for 5 mins

  • The staleTime is 0

  • isLoading: Your query has no data and is currently loading for the first time

  • isFetching flag is not part of the internal state machine - it is an additional flag that will be true whenever a request is in-flight. You can be fetching and success, you can be fetching and error - but you cannot be loading and success at the same time.

  • React Query will attempt to compare the old state and the new and keep as much of the previous state as possible to prevent trivial re-rendering

Query Cancellation

  • Queries that unmount or become unused will be cancelled if you consume the AbortSignal or attach a cancel function to your Promise, the Promise will be cancelled (e.g. aborting the fetch)

  • The query can also be cancelled manually

Setup Provider

  • To set up the provider for children, so that react-query can be used in component

  • To customize the default setting for library

UseQuery

  • Handle fetching data when the page is mounted and the dependencies are changed

  • Data will be cached based on the query key

UseMutation

  • Used to update data

Last updated

Was this helpful?