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 }
}