Pattern 1

Manual Fetch with enabled: false

Use enabled: false to prevent automatic fetching. Call refetch() to trigger the query manually.

const result = useQuery({
  queryKey: ['todos'],
  queryFn: fetchTodos,
  enabled: false,  // Don't fetch on mount
})

// Later, when user clicks a button:
result.refetch()

Query State

isPending: trueisFetching: falseisLoading: falseisError: falseisSuccess: false
status: pendingfetchStatus: idle

No todos available

Run the query again or check your filters to load new tasks.