1- import React , { useEffect , ChangeEvent , useState , useRef } from 'react' ;
1+ import React , { useEffect , ChangeEvent , useState , useRef , useMemo } from 'react' ;
22import styled from 'styled-components' ;
33import { useSearchTerritoryQuery } from '@services/api' ;
44
@@ -144,11 +144,16 @@ const SearchBar: React.FC<SearchBarProps> = ({
144144 skip : shouldQueryBeSkipped ,
145145 } ) ;
146146
147+ const stableExcludeTerritories = useMemo ( ( ) => excludeTerritories ,
148+ // eslint-disable-next-line react-hooks/exhaustive-deps
149+ [ JSON . stringify ( excludeTerritories ) ]
150+ ) ;
151+
147152 const shouldExcludeTerritoryFromResults = ( territory : LandDetailResultType ) : boolean => {
148- if ( excludeTerritories . length === 0 ) {
153+ if ( stableExcludeTerritories . length === 0 ) {
149154 return false ;
150155 }
151- return excludeTerritories . some (
156+ return stableExcludeTerritories . some (
152157 ( excludedTerritory : LandDetailResultType ) =>
153158 territory . land_id === excludedTerritory . land_id &&
154159 territory . land_type === excludedTerritory . land_type
@@ -159,14 +164,12 @@ const SearchBar: React.FC<SearchBarProps> = ({
159164 if ( shouldQueryBeSkipped || isFetching ) {
160165 setData ( undefined ) ;
161166 } else {
162- // Filter out excluded territories
163- let filteredData = queryData ;
164- if ( queryData ) {
165- filteredData = queryData . filter ( ( territory : LandDetailResultType ) => ! shouldExcludeTerritoryFromResults ( territory ) ) ;
166- }
167+ const filteredData = queryData
168+ ? queryData . filter ( ( territory : LandDetailResultType ) => ! shouldExcludeTerritoryFromResults ( territory ) )
169+ : undefined ;
167170 setData ( filteredData ) ;
168171 }
169- } , [ isFetching , queryData , query , shouldQueryBeSkipped , excludeTerritories ] ) ;
172+ } , [ isFetching , queryData , query , shouldQueryBeSkipped , stableExcludeTerritories ] ) ;
170173
171174 useEffect ( ( ) => {
172175 const handleClickOutside = ( event : MouseEvent ) => {
0 commit comments