懸念が「React Query」ユーザーQueryで機能しない場合
9422 ワード
この問題はRealct queryのホットな問題です。
useQuery + suspense
は正常に動作しますが、useQueries + suspense
は停止して動作しません.これは、Suspenceが最初のPromiseに戻ってから動作しないためです。
したがって、
useQuery
が1つのPromiseを返すのは問題ないが、複数の非同期要求を並列に処理するuseQueries
では正常に動作しない.そこで私もテストしてみました
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 60 * 1000, // 1분
refetchOnMount: false,
refetchOnReconnect: false,
refetchOnWindowFocus: false,
suspense: true,
},
},
})
これによりdefault optionにsuspense: true
のオプションが提供されます.const [
{
data: nowPlaying,
isFetched: isNowPlayingFetched,
isError: isNowPlayingError,
},
{ data: upcoming, isFetched: isUpcomingFetched, isError: isUpcomingError },
{ data: popular, isFetched: isPopularFetched, isError: isPopularError },
] = useQueries([
{
queryKey: ['nowPlaying'],
queryFn: () => moviesApi.nowPlaying(),
},
{
queryKey: ['upcoming'],
queryFn: () => moviesApi.upcoming(),
},
{
queryKey: ['popularMovie'],
queryFn: () => moviesApi.popular(),
},
])
useQueries
をしましたが、懸念は動いていません.でも、
const {
data: nowPlaying,
isFetched: isNowPlayingFetched,
isError: isNowPlayingError,
} = useQuery(['nowPlaying'], () => moviesApi.nowPlaying())
const {
data: upcoming,
isFetched: isUpcomingFetched,
isError: isUpcomingError,
} = useQuery(['upcoming'], () => moviesApi.upcoming())
const {
data: popular,
isFetched: isPopularFetched,
isError: isPopularError,
} = useQuery(['popularMovie'], () => moviesApi.popular())
このようにuseQuery
をそれぞれ処理することで、懸念が正常に動作することを確保することができる.したがって,
useQuries
を用いた部分では,懸念を適用する前のように分岐処理によりロードした.できるだけ早くこの問題を解決したいのですが...
Reference
この問題について(懸念が「React Query」ユーザーQueryで機能しない場合), 我々は、より多くの情報をここで見つけました https://velog.io/@dkdlel102/React-Query-useQueries에서-suspense가-작동하지-않을-때テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol