ksw_devlog
TIL 02.16 - 최종 프로젝트 2주차 본문
React query, useQueries
useQueries
- useQuery를 비동기로 여러개 실행할 경우 여러 귀찮은 경우가 생깁니다.
const usersQuery = useQuery("users", fetchUsers);
const teamsQuery = useQuery("teams", fetchTeams);
const projectsQuery = useQuery("projects", fetchProjects);
// 어짜피 세 함수 모두 비동기로 실행하는데, 세 변수를 개발자는 다 기억해야하고 세 변수에 대한 로딩, 성공, 실패처리를 모두 해야한다.
- 이때 promise.all처럼 useQuery를 하나로 묶을 수 있는데, 그것이 useQueries입니다. promise.all과 마찬가지로 하나의 배열에 각 쿼리에 대한 상태 값이 객체로 들어옵니다.
// 아래 예시는 롤 룬과, 스펠을 받아오는 예시입니다.
const result = useQueries([
{
queryKey: ["getRune", riot.version],
queryFn: () => api.getRunInfo(riot.version)
},
{
queryKey: ["getSpell", riot.version],
queryFn: () => api.getSpellInfo(riot.version)
}
]);
useEffect(() => {
console.log(result); // [{rune 정보, data: [], isSucces: true ...}, {spell 정보, data: [], isSucces: true ...}]
const loadingFinishAll = result.some(result => result.isLoading);
console.log(loadingFinishAll); // loadingFinishAll이 false이면 최종 완료
}, [result]);
'TIL' 카테고리의 다른 글
WIL 16주차 - 최종 프로젝트 2주차 (0) | 2023.02.20 |
---|---|
TIL 02.17 - 최종 프로젝트 2주차 (0) | 2023.02.18 |
TIL 02.15 - 최종 프로젝트 2주차 (0) | 2023.02.15 |
TIL 02.14 - 최종 프로젝트 2주차 (0) | 2023.02.14 |
TIL 02.13 - 최종 프로젝트 2주차 (0) | 2023.02.13 |