Size: a a a

2020 September 13

AP

Alexander Ponomarev in Svelte [svelt]
я не понимаю почему одно действие юзера может 20 раз инвалидировать дом и зачем так сделано
источник

AP

Alexander Ponomarev in Svelte [svelt]
почему хэндлеры не работают с одно и той же версией дома
источник

AP

Alexander Ponomarev in Svelte [svelt]
это может быть критично если ты начнешь делать getBoundingClientRect а какой-то эвент хэндлер перед тобой насрал в дом и пошло рефлоу
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
что-то все в кучу написал. если вопрос про то, почему так работает именно в свелт, ответ: 1) потому что так работает ивент-луп 2) фича с множественными хендлерами одного и того же ивента была прикручена без учета работы ивент-лупа. проще говорю свелт просто не делает никакого специального бачинга ивентов и чтобы как-то изменить это поведение
источник

AP

Alexander Ponomarev in Svelte [svelt]
я прекрасно понимаю как работает эвент луп и никто не тянул свелт в асинхронность. можно дальше не продолжать я выводы сделал =)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Alexander Ponomarev
я прекрасно понимаю как работает эвент луп и никто не тянул свелт в асинхронность. можно дальше не продолжать я выводы сделал =)
выше написал почему рендеринг сделали асинхронным
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
идея сделать его в микротасках лично моя
источник

AP

Alexander Ponomarev in Svelte [svelt]
хорошо, почему хэндлеры одно и того же эвента по микротасками разбиты?
источник

AP

Alexander Ponomarev in Svelte [svelt]
я не спорю что сделать один комит в дом это хорошо, просто это обесценивается такой системой обработки эвентов =)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Alexander Ponomarev
хорошо, почему хэндлеры одно и того же эвента по микротасками разбиты?
хендлеры тут не причем вообще. свелт вообще никак не меняет обычное поедение
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
раз ты хорошо знаешь как работает ивент-луп, тогда я сейчас тебе дам пример того как это работает без привязки к свелт вообще:
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
el.addEventListener('click', () => {
   console.log('first handler');
   queueMicrotask(() => { // $$invalidate
       console.log('change state');
   });
});

el.addEventListener('click', () => {
   console.log('second handler');
});
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
как видишь никакого свелт, просто 2 хендлера на один элемент.
источник

AP

Alexander Ponomarev in Svelte [svelt]
окей я понял тебя
источник

PM

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

КС

Кирилл Спасибович... in Svelte [svelt]
а если на ноде поменять display: inline-block через classList а не свелт и тут же сделать input.focus(), сфокусирует ?
источник

AP

Alexander Ponomarev in Svelte [svelt]
нет, тебе надо напрямую в дом изменение сделать, мимо свелта, чтобы оно заработало
источник

КС

Кирилл Спасибович... in Svelte [svelt]
ну я об этом и говорю, если я через classList.toggle('hidden') какой-нибудь сделаю, и после этого в этой же функции запущу input.focus() - заработает?
источник

AP

Alexander Ponomarev in Svelte [svelt]
да
источник

КС

Кирилл Спасибович... in Svelte [svelt]
а как должно быть с евент хендлерами ?
источник