Web / TanStack Interview Questions
What are query key factories and why are they recommended for large Vue apps?
A query key factory centralises all key definitions in one file. This makes invalidations predictable, lets TypeScript catch typos at compile time, and means a renaming/restructuring only needs to happen in one place.
// queryKeys.ts export const userKeys={ all: () => ["users"] as const, lists: () => ["users","list"] as const, list: (f:UserFilter) => ["users","list",f] as const, details: () => ["users","detail"] as const, detail: (id:number) => ["users","detail",id] as const, } // Component import { userKeys } from "@/queryKeys" const { data:user }=useQuery({ queryKey: userKeys.detail(userId.value), queryFn: ()=>fetchUser(userId.value), }) // Mutation onSuccess â invalidate ALL user queries const { mutate:deleteUser }=useMutation({ mutationFn: (id:number)=>fetch(`/api/users/${id}`,{method:"DELETE"}), onSuccess: ()=>{ qc.invalidateQueries({queryKey:userKeys.all()}) }, }) // TypeScript catches typos: // userKeys.detial(1) // TS Error: Property 'detial' does not exist // ["users","detial",1] // No error â typo silently creates wrong key
More Related questions...