From b2a3521c2e284c9e56a19a612bfd17266b12cde0 Mon Sep 17 00:00:00 2001 From: Sergey Nikitin Date: Tue, 22 Jun 2021 20:02:32 +0300 Subject: [PATCH] Memoize hook output value Avoid re-rendering of components that use the hook. --- src/usePosition.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/usePosition.js b/src/usePosition.js index 100781d..9948f5a 100644 --- a/src/usePosition.js +++ b/src/usePosition.js @@ -9,6 +9,10 @@ const defaultSettings = { export const usePosition = (watch = false, settings = defaultSettings) => { const [position, setPosition] = useState({}); const [error, setError] = useState(null); + + const value = useMemo(() => { + return {...position, error}; + }, [position, error]); const onChange = ({coords, timestamp}) => { setPosition({ @@ -45,5 +49,5 @@ export const usePosition = (watch = false, settings = defaultSettings) => { settings.maximumAge, ]); - return {...position, error}; + return value; };