I am using .map inside JSX to render some components. However, the variable inside .map is updating in useEffect, and the dependency of useEffect is a useSWR, useSWR is depends on useSearchParams(). Is there anything I am doing wrong to trigger this error? An example:
<div>
{koStat.map((koMatric) =>
<div key={koMatric}>
{koInfo[matchName]
? koMatric +
": " +
JSON.stringify(koInfo[matchName][koMatric])
: " unavailable"}
</div>
)}
</div>
In here, koInfo is inside a useEffect and the dependency array of the useEffect is [data, matchList], data is updating using useSWR, the selectedMatch is depends on useSearchParams:
const searchParams = useSearchParams();
const selectedMatch: string | null = searchParams.get("data")
const { data, isLoading, error } = useSWR(
"/api/model?data=" + selectedMatch,
fetcher,
{
refreshInterval: 1000,
}
);
The complete error in the browser console:
app-index.js:31 Warning: Maximum update depth exceeded.
This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.
I think it probably because one of the dependencies changes on every render., how can I solve it?
I have tried the solution in Maximum update depth exceeded., it didn't work.