[SWR]USSWRキャッシュからデータを取得する条件
本プロジェクトの機能には、登録済みの社員を招待する機能と、その社員を招待する家族情報の機能があります.
しかし、
SWR
でデータを包囲攻撃し、奇妙な点を発見した.// 작업 대상자를 불러오는 hooks
const fetcher = async () => {
const { data } = await targetsApi.readTargets();
return data;
}; // http://localhost:3001/targets를 호출함
export const useTargets = () => {
const { data, error, isValidating, mutate } = useSWR<ITargets[], Error>(
'/',
fetcher,
{ use: [logger] }
);
return {
targets: data,
error,
isLoading: !data && !error,
isValidating,
mutate,
};
};
// 부양가족의 정보를 불러오는 hooks
const fetcher = async () => {
const { data } = await familiesApi.readFamilies();
return data;
}; // http://localhost:3001/families를 호출함
export const useFamilies = () => {
const { data, error, isValidating, mutate } = useSWR<IFamily[], Error>(
`/`,
fetcher,
{ use: [logger] }
);
return {
families: data,
error,
isLoading: !data && !error,
isValidating,
mutate,
};
};
useTargets
は、ターゲットを担持するhookである.json-serverには2つのmockデータがあります.useFamilies
は家庭情報を載せたhookで、現在mockデータがあります.2つの情報は明らかに異なる情報であり、呼び出されたend-point図targetは/targets
であり、ファミリーは/families
であり、明らかに異なる!しかし、
useTargets
によって最初に2つのターゲット情報が受信され、その後、ページがホーム情報リストに移動されると、dbにはuseTargets
で受信した2つの情報が1つしか表示されないことは明らかである.useTargets
でキャッシュされたデータが表示されます.開発者ツールネットワークを表示しても、ターゲットの後に家庭への応答はありません.SWR
では、同じend-point
であれば、キャッシュを返すデータは最初の呼び出し後に知られるが、「同じエンドポイント」の正確な定義は無視される.axios
例にはそれぞれ異なるURLが加えられているので、異なるend-point
と考えられる.SWR
に記載されている同じend-point
は、fetcher
関数の値を意味するようである.axios
インスタンスに格納されたurlをキャプチャに移動し、コードを再記述し、各urlが単独で正常に動作します.Reference
この問題について([SWR]USSWRキャッシュからデータを取得する条件), 我々は、より多くの情報をここで見つけました https://velog.io/@with-key/SWR-useSWR에서-fetching-data를-caching-하는-조건テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol