Posts > React Query Basic: Query Lifecycle
July 16, 2024
I never really created my own loading and error handling before without using React query. I know you can achieve the loading and error state using useState and useEffect but I haven’t tried it, also try catch method is also great when you want to accomplish this loading and error state for your UI.
React-query has a lot of great lifecycle methods, but I usually use the status , ( success, pending, and error or just the isLoading or isError methods ). There are lot more state to use actually but these 3 will do for achieving the loading and error state you want for your UI.
👌A query can only have 3 states pending, success and error.
Here’s how you would do it ( a straightforward use )
const { data, status } = useQuery({
queryKey: 'movies',
queryFn: // your fetching stuff here
})
if ( status === 'pending' ) {
return <div> Loading data.... </div>
}
if ( status === 'error' ) {
return <div> Error getting your data. </div>
}
return (
<ul>
{ data.map(() => (
<li>{data.name}</li>
))}
</ul>
)So very straight forward as I said, you can get the status from your useQuery then status returnspending , success and error from your fetching method. Then just use them to generate your component as such.
isLoadinginstead of using status and checking if status === 'pending' , or status === 'sucess' you can also just use isLoading which returns a boolean if your fetching is still in progress or not.
const { data, isLoading } = useQuery(
// useQuery code here
)isErrorsame with isLoading you can also use isError to check if your API fetching returns an error.
const { data, isLoading, isError } = useQuery(
// useQuery code here
)Sometimes our internet and server fail us and we want something to show users that there’s a delay in “loading” or there is an error on the data that they want to see. So with react-query lifecycle method can help us make sure that we make it so.