typescript - Hur man upprepade gånger skickar en förfrågan till samma API med react-query?
Jag vill använda react-query för att skicka förfrågan och kontrollera ett fält i svaret direkt efter. När jag har hittat det fält jag behöver i svaret, sluta utföra fler åtgärder. Annars fortsätt att köra förfrågan igen tills jag hittar fältet.
const queryResult = useQuery({ queryKey: ['test','testDataId'], queryFn: ({queryKey}) => fetchTestData(queryKey[1]),
});
Svar #1
Det finns också ett annat sätt som du kan prova genom att lägga till retry-parametrar och också hantera fördröjningen genom retryDelay:
ex.
const result = useQuery({
queryKey,
queryFn: ({queryKey}) => fetchTestData(queryKey[1]),
retry: 10, // Will retry failed requests 10 times before displaying an error
})
Du kan också lägga till en funktion i den för att hantera baserat på status
const result = useQuery({
queryKey,
queryFn: ({queryKey}) => fetchTestData(queryKey[1]),
retry: (count, {message: status}) => (status !== '404' && status !== '401')
// You can add logic based on your requirement and status code.
})
referenslänk:
https://tanstack.com/query/v4/docs/guides/query-retries
React Query fortsätter att försöka trots att 'enabled' är satt till false
Svar #2
Du kan uppnå detta genom att använda invalidateQueries, vilket kommer att markera den aktuella datan som föråldrad och utlösa en hämtning i bakgrunden (så länge du inte skickar refetchType: 'none' till den).
I din onSuccess, lägg till detta (inkapslat i kontrollen för fältet du letar efter):
queryClient.invalidateQueries({ queryKey: [queryKey] });
