React 질의의 상태 확인
6459 단어 reactwebdevjavascripttypescript
success
: 조회가 성공했고 관련 데이터가 있습니다error
: 검색이 작동하지 않고 오류가 설정되었습니다loading
: 질의에 데이터가 없으며 현재 처음 로드 중idle
: 쿼리가 활성화되지 않았기 때문에 실행된 적이 없습니다.isFetching
로고는 내부 상태기의 일부분이 아닙니다. 이것은 추가 로고로 요청이 진행될 때 진짜가 됩니다.너는 잡을 수도 있고, 성공할 수도 있고, 잘못할 수도 있지만, 동시에 불러올 수도 없고, 성공할 수도 없다.국가 기계가 이 점을 확보했다.the types
표준 예
검색을 사용하지 않는 가장자리이기 때문에 빈 상태는 기본적으로 무시됩니다.그래서 대부분의 예는 다음과 같다.
const todos = useTodos()
if (todos.isLoading) {
return 'Loading...'
}
if (todos.error) {
return 'An error has occurred: ' + todos.error.message
}
return <div>{todos.data.map(renderTodo)}</div>
여기서, 우리는 우선 불러오기와 오류를 검사한 다음에 데이터를 표시합니다.어떤 용례에 대해서 말하자면, 이것은 좋은 것일 수도 있지만, 다른 용례에 대해서는 그렇지 않다.많은 데이터 획득 솔루션, 특히 수동으로 제작된 솔루션은 재식각 메커니즘이 없거나 현식 사용자의 상호작용만 재식각된다.하지만 사실은 그렇다.
기본적으로, 이것은 매우 적극적으로 재식각을 할 뿐만 아니라, 사용자가 주동적으로 재식각을 요구하지 않을 것이다.REFETCONMOUNT, REFETCON Window Focus와 REFETCON Reconnect의 개념은 데이터의 정확성을 유지하는데 매우 도움이 되지만 이러한 자동 백그라운드 재부각이 실패하면 사용자 체험의 혼란을 초래할 수 있다.
배경 오류
많은 경우, 만약 배경의 재식각이 실패한다면, 그것은 묵묵히 무시될 수도 있다.하지만 위 코드는 이를 해낼 수 없다.두 가지 예를 살펴보겠습니다.
{
"status": "error",
"error": { "message": "Something went wrong" },
"data": [{ ... }]
}
보시다시피, 우리는 오류와 낡은 데이터를 사용할 수 있습니다.이것이 바로 React Query의 강점이다. 그것은 유행이 지난 동시에 캐시 메커니즘을 재검증하는 것이다. 이것은 데이터가 유행이 지난 경우에도 데이터를 제공할 수 있다는 것을 의미한다.지금은 우리가 무엇을 전시할지 결정할 때다.오류 표시가 중요합니까?만약 우리가 유행이 지난 데이터가 있다면, 유행이 지난 데이터만 표시하면 충분합니까?우리는 이 두 가지 상황을 동시에 표시하거나 작은 배경 오류 표시기를 사용해야 합니까?
이 문제는 명확한 답이 없다. 구체적인 용례에 달려 있다.그러나 상기 두 가지 예를 감안하면 잘못된 화면으로 데이터를 바꾸면 사용자 체험이 혼란스러울 것이라고 생각합니다.
React Query가 실패한 조회를 기본적으로 지수로 세 번 재시도할 때마다 더 중요하기 때문에 오래된 데이터를 오류 화면으로 바꾸는 데 몇 초가 걸릴 수 있습니다.만약 당신도 배경 추출 지표가 없다면, 이것은 정말 사람을 곤혹스럽게 할 것이다.
이것이 바로 내가 일반적으로 데이터 가용성을 먼저 검사하는 이유이다.
const todos = useTodos()
if (todos.data) {
return <div>{todos.data.map(renderTodo)}</div>
}
if (todos.error) {
return 'An error has occurred: ' + todos.error.message
}
return 'Loading...'
마찬가지로 무엇이 옳고 명확한 원칙이 없는지는 용례에 고도로 의존하기 때문이다.모든 사람은 적극적인 재식각이 가져온 결과를 의식해야 한다. 우리는 간단한 todo 예시를 엄격히 따르지 않고 코드를 구축해야 한다.😉.특히 고맙다 는 먼저 나에게 왜 이런 상태 검사 모델이 어떤 상황에서 해로운지 강조했다.
만약 무슨 문제가 있으면 언제든지 저에게 연락하거나 아래에 메시지를 남겨 주십시오⬇️
Reference
이 문제에 관하여(React 질의의 상태 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tkdodo/status-checks-in-react-query-2nbb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)