From 46d5303fddad0134b6849258df172e8db89a0fb3 Mon Sep 17 00:00:00 2001 From: Aleksandar Dimitrov Date: Thu, 21 Jul 2022 14:39:52 +0300 Subject: [PATCH] feat: make scroll tracking optional --- src/index.ts | 15 +++++++++++---- src/types.d.ts | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index 5fc60eb..258c7f5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,8 @@ function getDimensionObject(node: HTMLElement): DimensionObject { } function useDimensions({ - liveMeasure = true + liveMeasure = true, + trackScrolling = true }: UseDimensionsArgs = {}): UseDimensionsHook { const [dimensions, setDimensions] = useState({}); const [node, setNode] = useState(null); @@ -36,13 +37,19 @@ function useDimensions({ if (liveMeasure) { window.addEventListener("resize", measure); + } + if (trackScrolling) { window.addEventListener("scroll", measure); + } - return () => { + return () => { + if (liveMeasure) { window.removeEventListener("resize", measure); + } + if (trackScrolling) { window.removeEventListener("scroll", measure); - }; - } + } + }; } }, [node]); diff --git a/src/types.d.ts b/src/types.d.ts index abae2cf..5fb597a 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -17,4 +17,5 @@ export type UseDimensionsHook = [ export interface UseDimensionsArgs { liveMeasure?: boolean; + trackScrolling?: boolean; }