fix infinite fetching loop

This commit is contained in:
Aarni Halinen
2021-03-28 20:32:07 +03:00
parent e0621b7e41
commit f55e362089
5 changed files with 33 additions and 4 deletions
+10 -1
View File
@@ -1,4 +1,6 @@
import { useRef } from "react";
import useSWR from "swr";
import isDeepEqual from "fast-deep-equal/react";
import axios, { AxiosRequestConfig } from "axios";
import Event from "@models/Event";
import { getAuthHeader } from "@utils/auth";
@@ -34,7 +36,14 @@ const useFetchEvents = ({
options = {},
}: FetchArguments) => {
const { url, config } = generateFetchParams(id, options);
const { data, error } = useSWR([url, config], fetcher, { initialData });
// Use ref, since config dependency is non-primitive => without this we have infinite fetch loop
const configRef = useRef(config);
if (!isDeepEqual(configRef.current, config)) {
configRef.current = config;
}
const { data, error } = useSWR([url, configRef.current], fetcher, { initialData });
return {
data: data?.results || data,
error,