Query Keys sollten als Abhängigkeits-Array für Ihre Query-Funktion betrachtet werden: Jede Variable, die innerhalb der queryFn verwendet wird, sollte dem Query Key hinzugefügt werden. Dies stellt sicher, dass Abfragen unabhängig voneinander zwischengespeichert werden und dass Abfragen automatisch neu abgerufen werden, wenn sich die Variablen ändern.
Beispiele fĂĽr falschen Code fĂĽr diese Regel
/* eslint "@tanstack/query/exhaustive-deps": "error" */
useQuery({
queryKey: ['todo'],
queryFn: () => api.getTodo(todoId),
})
const todoQueries = {
detail: (id) => ({ queryKey: ['todo'], queryFn: () => api.getTodo(id) }),
}
/* eslint "@tanstack/query/exhaustive-deps": "error" */
useQuery({
queryKey: ['todo'],
queryFn: () => api.getTodo(todoId),
})
const todoQueries = {
detail: (id) => ({ queryKey: ['todo'], queryFn: () => api.getTodo(id) }),
}
Beispiele fĂĽr korrekten Code fĂĽr diese Regel
useQuery({
queryKey: ['todo', todoId],
queryFn: () => api.getTodo(todoId),
})
const todoQueries = {
detail: (id) => ({ queryKey: ['todo', id], queryFn: () => api.getTodo(id) }),
}
useQuery({
queryKey: ['todo', todoId],
queryFn: () => api.getTodo(todoId),
})
const todoQueries = {
detail: (id) => ({ queryKey: ['todo', id], queryFn: () => api.getTodo(id) }),
}
Wenn Ihnen die Regeln für Query Keys egal sind, dann benötigen Sie diese Regel nicht.