@@ -6,22 +6,26 @@ import { MarkerClustererProvider } from './Context';
66import { MarkerClustererProps } from './type' ;
77import { passRef } from '../../utils/passRef' ;
88import { useMapContext } from '../Provider/MapProvider' ;
9+ import { useEvent } from '../../hooks/useEvent' ;
910
1011const createMarkerClusterer = ( options : MarkerClustererOptions ) => new MarkerClustererClass ( options ) ;
1112
1213export const MarkerClusterer = forwardRef < MarkerClustererClass , MarkerClustererProps > ( function MarkerClusterer (
13- { children, algorithmOptions, algorithm, renderer, onClusterClick } ,
14+ { children, algorithmOptions, algorithm, renderer, onClusterClick = null } ,
1415 ref
1516) {
1617 const map = useMapContext ( ) ;
1718 const markers = useRef ( new Set < google . maps . Marker | google . maps . marker . AdvancedMarkerElement > ( ) ) ;
19+
20+ const onCachedClusterClick = useEvent ( onClusterClick ) ;
21+
1822 const markerCluster = useRef (
1923 createMarkerClusterer ( {
2024 map,
2125 algorithmOptions,
2226 algorithm,
2327 renderer,
24- onClusterClick,
28+ onClusterClick : onCachedClusterClick ?? undefined ,
2529 } )
2630 ) ;
2731
@@ -45,9 +49,9 @@ export const MarkerClusterer = forwardRef<MarkerClustererClass, MarkerClustererP
4549 algorithmOptions,
4650 algorithm,
4751 renderer,
48- onClusterClick,
52+ onClusterClick : onCachedClusterClick ?? undefined ,
4953 } ) ;
50- } , [ algorithmOptions , algorithm , renderer , onClusterClick ] ) ;
54+ } , [ algorithmOptions , algorithm , renderer ] ) ;
5155
5256 return < MarkerClustererProvider value = { value } > { children } </ MarkerClustererProvider > ;
5357} ) ;
0 commit comments