Skip to main content

Practical Examples

Prefetching

function UserCard({ user }: { user: User }) {
const handleMouseEnter = () => {
// Prefetch user details when hovering
userQueryManager.prefetchRetrieve(user.id, {
staleTime: 5 * 60 * 1000
})
}

return (
<div onMouseEnter={handleMouseEnter}>
<h3>{user.name}</h3>
<p>{user.email}</p>
</div>
)
}

Custom Optimistic Update Pattern

function useOptimisticUserUpdate() {
const { mutations, queryKeys } = userQueryManager

const optimisticUpdate = async (userId: string, updates: Partial<User>) => {
// Cancel ongoing queries
await queryKeys.cancelListQueries()

// Get current data
const previousUser = queryKeys.getRetrieveData(userId)
if (!previousUser) return null

// Apply optimistic update
const optimisticUser = { ...previousUser, ...updates }
mutations.updateItems(optimisticUser)

return {
rollback: () => mutations.updateItems(previousUser),
optimisticUser
}
}

return { optimisticUpdate }
}