From 903de3488d1de0b523eb7f957598dd33da2655a0 Mon Sep 17 00:00:00 2001 From: Jesse Jafa Date: Sat, 12 Apr 2025 15:51:49 +0300 Subject: [PATCH] fix: ssr issue, move fns inside useEffect --- src/useGeolocation.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/useGeolocation.ts b/src/useGeolocation.ts index 5c3f64c770..64bab8589c 100644 --- a/src/useGeolocation.ts +++ b/src/useGeolocation.ts @@ -36,13 +36,11 @@ const useGeolocation = (options?: PositionOptions): GeoLocationSensorState => { latitude: null, longitude: null, speed: null, - timestamp: Date.now(), + timestamp: null, }); - let mounted = true; - let watchId: any; - const onEvent = (event: any) => { - if (mounted) { + useEffect(() => { + const onEvent = (event: any) => { setState({ loading: false, accuracy: event.coords.accuracy, @@ -54,17 +52,14 @@ const useGeolocation = (options?: PositionOptions): GeoLocationSensorState => { speed: event.coords.speed, timestamp: event.timestamp, }); - } - }; - const onEventError = (error: IGeolocationPositionError) => - mounted && setState((oldState) => ({ ...oldState, loading: false, error })); + }; + const onEventError = (error: IGeolocationPositionError) => + setState((oldState) => ({ ...oldState, loading: false, error })); - useEffect(() => { navigator.geolocation.getCurrentPosition(onEvent, onEventError, options); - watchId = navigator.geolocation.watchPosition(onEvent, onEventError, options); + let watchId = navigator.geolocation.watchPosition(onEvent, onEventError, options); return () => { - mounted = false; navigator.geolocation.clearWatch(watchId); }; }, []);