From a4c89c3251b7d1e225b90cb8554acdb6170737bb Mon Sep 17 00:00:00 2001 From: Michael Bashurov Date: Tue, 4 Aug 2020 16:18:22 +0300 Subject: [PATCH] Fixed observer pool for hooks By adding observer to the pool when it's created rather than we have an element to observe --- src/observer.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/observer.ts b/src/observer.ts index 84792562..f926e742 100644 --- a/src/observer.ts +++ b/src/observer.ts @@ -66,14 +66,18 @@ export function callback( export function createObserver( options: IntersectionObserverInit ): IntersectionObserver { - return getPooled(options) || new IntersectionObserver(callback, options); -} + const pooled = getPooled(options); -export function observeElement(element: Instance) { - if (!observerElementsMap.has(element.observer)) { - observerElementsMap.set(element.observer, new Set()); + if (pooled) { + return pooled; } + const observer = new IntersectionObserver(callback, options); + observerElementsMap.set(observer, new Set()); + return observer; +} + +export function observeElement(element: Instance) { observerElementsMap.get(element.observer)?.add(element); element.observer!.observe(element.target!); }