Size: a a a

2020 December 26

PM

Pavel 🦇 Malyshev in Svelte [svelt]
чтобы написать коммон решение, нужно решать коммон кейс
источник

A

Arushwl in Svelte [svelt]
я ж говорю - это тестовый вариант, думаю как фильтровать снаружи
архитектура не конечная

Собственно над ней и думаю )
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Arushwl
я ж говорю - это тестовый вариант, думаю как фильтровать снаружи
архитектура не конечная

Собственно над ней и думаю )
вот это что делает:     observer.unobserve();
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
туда вроде target нужно тоже
источник

A

Arushwl in Svelte [svelt]
да - targets.forEach((target) => observer.unobserve(target));
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Arushwl
да - targets.forEach((target) => observer.unobserve(target));
entry.target - это DOM элемент?
источник

A

Arushwl in Svelte [svelt]
да - the Element whose intersection with the intersection root changed
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
вот так наверно достаточно коммон получается: https://svelte.dev/repl/9e421176d655461899ef0b2884c4196a?version=3.31.0
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
я правильно понял что ты ждешь loaded прежде чем вешать observer.observe ?
источник

A

Arushwl in Svelte [svelt]
Pavel 🦇 Malyshev
я правильно понял что ты ждешь loaded прежде чем вешать observer.observe ?
да - обсервер стартует в update()
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
ну тогда все так
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
дальше вешаешь ивент, получаешь в detail.entries там фильтруешь по detail.entries.filter(entry => entry.target.dataset.id)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
ну и делаешь че тебе нужно
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
экшн по-сути занимается только менеджментом обсервера
источник

A

Arushwl in Svelte [svelt]
Pavel 🦇 Malyshev
экшн по-сути занимается только менеджментом обсервера
👍🏻
источник

A

Arushwl in Svelte [svelt]
а чего не заводится?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Arushwl
а чего не заводится?
так я только обсервер переписал)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
использование я же не знаю)
источник

A

Arushwl in Svelte [svelt]
ага
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
@Valexrs что-то вроде:

let entries = [];

$: animated = entries.reduce((ids, entry) => {
   entry.isIntersecting && ids.push(+entry.target.dataset.id);
   return ids;
}, []);


<section
 use:intobserver={{loaded, selector: '[data-id]'}}
 on:intersection={(e) => entries = e.detail.entries}
>
...
 <li class:animate={animated.includes(item.id)}>
</section>
источник