Dependent (or serial) queries depend on previous ones to finish before they can execute. To achieve this, it's as easy as using the enabled
option to tell a query when it is ready to run:
// Get the userconst { data: user } = useQuery(['user', email], getUserByEmail)const userId = user?.id// Then get the user's projectsconst { status, fetchStatus, data: projects } = useQuery(['projects', userId],getProjectsByUser,{// The query will not execute until the userId existsenabled: !!userId,})
The projects
query will start in:
status: 'loading'fetchStatus: 'idle'
As soon as the user
is available, the projects
query will be enabled
and will then transition to:
status: 'loading'fetchStatus: 'fetching'
Once we have the projects, it will go to:
status: 'success'fetchStatus: 'idle'
The best JavaScript newsletter! Delivered every Monday to over 76,000 devs.