{data?.pages.map((page, i) => (
{page.data.map(todo => (
{todo.title}
))}
))}
{isFetchingNextPage &&
Loading more...
}
)
}
```
**When to use**: Paginated lists with infinite scroll
### Pattern 5: Query Cancellation
```tsx
function SearchTodos() {
const [search, setSearch] = useState('')
const { data } = useQuery({
queryKey: ['todos', 'search', search],
queryFn: async ({ signal }) => {
const response = await fetch(`/api/todos?q=${search}`, { signal })
return response.json()
},
enabled: search.length > 2, // Only search if 3+ characters
})
return (