React Query에서 실패한 데이터베이스 쿼리 재시도 구현
React Query는 데이터 쿼리 및 상태 관리 작업을 쉽게 처리하는 데 도움이 되는 강력한 데이터 쿼리 및 상태 관리 라이브러리입니다. 실제 애플리케이션에서는 데이터베이스 쿼리 실패가 자주 발생합니다. 이때 쿼리 안정성을 향상시키기 위해 자동 실패 재시도 메커니즘을 구현해야 합니다. 이 글에서는 React Query에서 데이터베이스 쿼리의 실패한 재시도를 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
React Query에서는 쿼리 후크를 사용하여 데이터베이스 쿼리를 수행할 수 있습니다. 쿼리 후크에서는 queryKey 및 queryFn을 지정하여 쿼리를 정의할 수 있습니다. queryKey는 쿼리 이름을 식별하는 고유 키이고, queryFn은 실제 쿼리 작업을 수행하는 비동기 함수입니다. Query Hook을 호출하면 React Query는 자동으로 queryFn을 실행하고 쿼리 결과를 글로벌 캐시에 저장합니다.
데이터베이스 쿼리의 실패한 재시도를 구현하려면 React Query의 onError 콜백을 사용할 수 있습니다. queryFn에서 오류가 발생하면 React Query는 자동으로 onError 콜백을 트리거합니다. onError 콜백에서 재시도 논리를 구현할 수 있습니다. 다음은 샘플 코드입니다.
import { useQuery } from 'react-query'; const fetchUser = async (userId) => { const response = await fetch(`https://example.com/api/users/${userId}`); if (!response.ok) { throw new Error('Failed to fetch user'); } return response.json(); }; const User = ({ userId }) => { const queryKey = ['user', userId]; const { data, isError, error } = useQuery(queryKey, fetchUser, { retry: 3, retryDelay: 1000, onError: (error, key, config) => { console.error('An error occurred:', error); }, }); if (isError) { return <div>Error: {error.message}</div>; } return ( <div> <h1>{data.name}</h1> <p>{data.email}</p> </div> ); }; export default User;
위 코드에서는 사용자 정보를 쿼리하기 위해 fetchUser라는 비동기 함수를 정의합니다. 쿼리가 실패하면 사용자 정의 오류가 발생합니다. 그런 다음 retry 및 retryDelay 매개변수를 설정하여 쿼리 후크에 재시도 논리를 구현합니다. retry 매개변수는 재시도 횟수를 지정하고, retryDelay 매개변수는 각 재시도 간의 지연 시간을 지정합니다. 또한 콘솔에 오류 로그를 인쇄하거나 다른 처리를 수행할 수 있는 onError 콜백을 통해 오류 정보를 처리합니다.
위의 코드 예시를 사용하면 React 컴포넌트에서 User 컴포넌트를 호출하여 사용자 정보를 쿼리할 수 있습니다. 쿼리가 실패하면 React Query는 자동으로 재시도 로직을 수행하고 매번 1초 간격으로 최대 3번까지 재시도합니다. 재시도 횟수가 제한을 초과하면 isError 속성이 true가 되고 오류 프롬프트 표시 등 구성 요소에서 오류 정보를 처리할 수 있습니다.
요약:
React Query의 onError 콜백을 사용하면 데이터베이스 쿼리의 실패한 재시도 로직을 쉽게 구현할 수 있습니다. 특정 쿼리 함수에서 오류를 발생시킨 다음 오류 정보를 처리하고 onError 콜백에서 재시도 작업을 트리거합니다. 이를 통해 쿼리의 안정성이 향상되고 데이터의 정확성이 보장됩니다. 동시에 React Query는 실제 상황에 따라 조정될 수 있는 재시도 횟수 및 재시도 간격과 같은 기타 유연한 구성 매개변수도 제공합니다.
위 내용은 React Query에서 데이터베이스 쿼리의 실패한 재시도 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!