Dependent Queries in React Query

Illustrate how to manage dependent queries, where the result of one query depends on the successful completion of another, using React Query's useQuery hook.
import { useQuery } from 'react-query';
import axios from 'axios';

const fetchUserByEmail = async (email) => {
  const { data } = await axios.get(`/api/users/${email}`);
  return data;

const fetchProjectsByUserId = async (userId) => {
  const { data } = await axios.get(`/api/projects/${userId}`);
  return data;
Defines two asynchronous functions using axios to fetch data. The first function fetches a user by email and the second function fetches projects by a given user's ID.
const UserDetails = ({ email }) => {
  // First query to fetch user by email
  const { data: user, isSuccess } = useQuery(['user', email], () => fetchUserByEmail(email), {
    enabled: !!email // This query won't run until the email is provided

  // Dependent query to fetch projects once the user has been successfully fetched
  const { data: projects } = useQuery(['projects', user?.id], () => fetchProjectsByUserId(, {
    enabled: !!user?.id // This query depends on the userId from the first query

  return (
      {/* Render user and projects data */}
Creates a React component, UserDetails, that demonstrates dependent querying. It uses the useQuery hook twice: the first query fetches user details by email, and the second query fetches the user's projects, which depends on the successful completion of the first query.