Помню, нужно было в компоненте повесить Intersection Observer. Сначала всё скинул в компонент, код выглядел как заброшенный чердак, но всё работало. Вешал через onMount.
Позже, познал силу экшенов, перенёс наблюдателя в экшн функцию и вынес из компонента. Передавал вовнутрь только строками селекторы - за кем следить и callback.
use:observe={{ targets: [ "#somediv > a" ], handleIntersect }}
В конце экшена отписываемся
return {
destroy() {
observer.disconnect();
}
}
И код проще стал и переиспользуемость имеется.
Actions это реально крутая штука🤔