Skip to content

Commit 17a996c

Browse files
committed
fix usecase listing page infinte loop issue
1 parent 663dc07 commit 17a996c

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

app/[locale]/(user)/components/ListingComponent.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
Text,
1515
Tray,
1616
} from 'opub-ui';
17-
import React, { useEffect, useReducer, useRef, useState } from 'react';
17+
import React, { useEffect, useMemo, useReducer, useRef, useState } from 'react';
1818

1919
import BreadCrumbs from '@/components/BreadCrumbs';
2020
import { Icons } from '@/components/icons';
@@ -269,7 +269,10 @@ const ListingComponent: React.FC<ListingProps> = ({
269269
const count = facets?.total ?? 0;
270270
const datasetDetails = facets?.results ?? [];
271271

272-
useUrlParams(queryParams, setQueryParams, setVariables, lockedFilters);
272+
// Stabilize lockedFilters reference to prevent infinite loops
273+
const stableLockedFilters = useMemo(() => lockedFilters, [JSON.stringify(lockedFilters)]);
274+
275+
useUrlParams(queryParams, setQueryParams, setVariables, stableLockedFilters);
273276
const latestFetchId = useRef(0);
274277

275278
useEffect(() => {
@@ -399,7 +402,7 @@ const ListingComponent: React.FC<ListingProps> = ({
399402
options={filterOptions}
400403
setSelectedOptions={handleFilterChange}
401404
selectedOptions={queryParams.filters}
402-
lockedFilters={lockedFilters}
405+
lockedFilters={stableLockedFilters}
403406
/>
404407
</div>
405408

@@ -495,7 +498,7 @@ const ListingComponent: React.FC<ListingProps> = ({
495498
options={filterOptions}
496499
setSelectedOptions={handleFilterChange}
497500
selectedOptions={queryParams.filters}
498-
lockedFilters={lockedFilters}
501+
lockedFilters={stableLockedFilters}
499502
/>
500503
</Tray>
501504
</div>
@@ -511,7 +514,7 @@ const ListingComponent: React.FC<ListingProps> = ({
511514
.filter((value) => category !== 'sort')
512515
.map((value) => {
513516
// Check if this filter value is locked
514-
const isLocked = lockedFilters[category]?.includes(value);
517+
const isLocked = stableLockedFilters[category]?.includes(value);
515518
return (
516519
<Pill
517520
key={`${category}-${value}`}

0 commit comments

Comments
 (0)