Skip to content

Commit b3d7e2c

Browse files
committed
feat: memorize onClusterClick callback
1 parent 3450315 commit b3d7e2c

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

src/components/MarkerClusterer/index.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,26 @@ import { MarkerClustererProvider } from './Context';
66
import { MarkerClustererProps } from './type';
77
import { passRef } from '../../utils/passRef';
88
import { useMapContext } from '../Provider/MapProvider';
9+
import { useEvent } from '../../hooks/useEvent';
910

1011
const createMarkerClusterer = (options: MarkerClustererOptions) => new MarkerClustererClass(options);
1112

1213
export 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

Comments
 (0)