javascript - איך להכין השמדה נכונה של Observer חיתוך?


אני כרגע עוטף את ה-API של IntersectionObserver לפעולה של Svelte. חלק מזה דורש ניקוי בפונקציה destroy(), למטה מה שיש לי.

function observe(node: HTMLElement, key: string) {
    const observer = new IntersectionObserver(nodes => {
        locations[key] = nodes[0]!.isIntersecting;
        locations = locations;
    });
    
    observer.observe(node);

    return {
        // this is the focus of my question
        destroy() {
            observer.unobserve(node);
        }
    }
}

האם יש משהו נוסף שאני צריך לעשות כדי להרוס את ה-IntersectionObserver?

תשובה #1

לפי התיעוד של observe():

כדי להפסיק להבחין באלמנט, קראו ל-IntersectionObserver.unobserve().

אז אני חושב שאין עוד מה לעשות.

אלטרנטיבה נוספת היא להשתמש ב-observer.disconnect() כדי להפסיק לעקוב אחרי כל האלמנטים המטרה שלו.