Size: a a a

2020 April 27

К

Константин in Svelte [svelt]
Nurbek Akhmedov
Я прокидовал
А как именно? let:instance {instance} ?
источник

NA

Nurbek Akhmedov in Svelte [svelt]
Репле слелай мини пример
источник

BS

Bohdan Shulha in Svelte [svelt]
> всегда будет работать на старых или сильно загруженных машинах

Почему?

- setTimeout ставит коллбек в очередь, отдаёт управление
- JS движок продолжает выполнение с места вызова setTimeout, где отрабатывает синхронная внутрянка svelte
- EventLoop опрашивает очередь на предмет готовых тасок
- EventLoop запускает готовые таски

Здесь нет места случайности, последовательность выполнения линейна.

BTW, если setTimeout не передавать, собственно, таймаут (или он будет равен 0), то коллбек запустится со “скоростью” работы EventLoop. Этим свойством я воспользовался

https://codesandbox.io/s/youthful-heisenberg-ywfpt?file=/App.svelte
источник

NA

Nurbek Akhmedov in Svelte [svelt]
Константин
А как именно? let:instance {instance} ?
источник

К

Константин in Svelte [svelt]
а, ну понял, через ещё 1 элемент
источник

К

Константин in Svelte [svelt]
странно, что нельзя вот так <Component let:instance {instance} />
источник

AS

Alexey Schebelev in Svelte [svelt]
Это бессмысленная запись. instance как раз и возвращается из этого компонента, зачем его обратно передавать
источник

NA

Nurbek Akhmedov in Svelte [svelt]
Alexey Schebelev
Это бессмысленная запись. instance как раз и возвращается из этого компонента, зачем его обратно передавать
Тоже сомневался ))
источник

BS

Bohdan Shulha in Svelte [svelt]
> но в продакшен скорее всего не пустят

А по поводу прода - необходимо выполнить один из следующих пунктов, чтобы сохранить отзывчивость браузера и нервы пользователя:
- разбить вычисления на небольшие этапы (тот же setTimeout 0 в помощь)
- вынести вычисления в отдельный поток через webworker
- производить вычисления на сервере
источник

К

Константин in Svelte [svelt]
блин, всё равно валится ReferenceError: instance is not defined
источник

NA

Nurbek Akhmedov in Svelte [svelt]
Давай репл
источник

К

Константин in Svelte [svelt]
а, кажется, понял... Нельзя прокинуть в сам компонент дополнительные пропсы через слот, так ведь?
источник

NA

Nurbek Akhmedov in Svelte [svelt]
Смотря где и как передаешь
источник

AS

Alexey Schebelev in Svelte [svelt]
Директива let нужна для проброса контекста этого компонента  в слот этого же компонента.

Например есть компонент:
<script>
   let a = 42;
</script>
<slot {a}></slot>

И родитель где мы его используем:

<script>
...
let z = -42;
</script>

<Child>{??????}</Child>


Вот где знаки вопроса, там контекст родителя. Т.е. там мы можем использовать только переменную z, а переменная a - в контексте компоента Child - вот чтобы ее вытащить из того контекста в контекст слота этого компонента мы и добавляем let:a. После этого можно будет использовать и a и z в контексте слота.
<Child let:a>{z} и {a}</Child>
источник

I

Igor Pellinen in Svelte [svelt]
Bohdan Shulha
> всегда будет работать на старых или сильно загруженных машинах

Почему?

- setTimeout ставит коллбек в очередь, отдаёт управление
- JS движок продолжает выполнение с места вызова setTimeout, где отрабатывает синхронная внутрянка svelte
- EventLoop опрашивает очередь на предмет готовых тасок
- EventLoop запускает готовые таски

Здесь нет места случайности, последовательность выполнения линейна.

BTW, если setTimeout не передавать, собственно, таймаут (или он будет равен 0), то коллбек запустится со “скоростью” работы EventLoop. Этим свойством я воспользовался

https://codesandbox.io/s/youthful-heisenberg-ywfpt?file=/App.svelte
Конкретно в этом примере да, из-за синхронности. Мы плавно переходим к моему следующему стенду песочницы, который будет поинтереснее, асинхронным :3

Пока что могу поделиться таким примером на vue, который работает не во всех случаях: https://jsfiddle.net/igronus/a45tsyn7/, даже если выставить 100 миллисекунд.

PS. Во многих реальных js-движках даже с указанным нулевым значением таймаута по факту он будет составлять что-то типа 4 мс, насколько я помню. Но не суть, дело ведь не в этом.
источник

К

Константин in Svelte [svelt]
Alexey Schebelev
Директива let нужна для проброса контекста этого компонента  в слот этого же компонента.

Например есть компонент:
<script>
   let a = 42;
</script>
<slot {a}></slot>

И родитель где мы его используем:

<script>
...
let z = -42;
</script>

<Child>{??????}</Child>


Вот где знаки вопроса, там контекст родителя. Т.е. там мы можем использовать только переменную z, а переменная a - в контексте компоента Child - вот чтобы ее вытащить из того контекста в контекст слота этого компонента мы и добавляем let:a. После этого можно будет использовать и a и z в контексте слота.
<Child let:a>{z} и {a}</Child>
ну собственно я об этом и говорю, что let хватает контекст из элементов-потомков. Жаль, что нельзя докинуть пропсов через слот
источник

AS

Alexey Schebelev in Svelte [svelt]
куда именно докинуть пропсов?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Андрей 黑和尚
подскажите, взял пример heloworld внес свои изменения, но на странице все равно отражается старый вариант, делал npm run buld, вижу что бандл пересобрался, но страница старая отражается, как сбросить, откуда старое показывается ?
npm run dev
источник

К

Константин in Svelte [svelt]
Alexey Schebelev
куда именно докинуть пропсов?
в компонент
источник

EM

Eugene Maltsev in Svelte [svelt]
что-то я не могу понять что вы такого с slot делаете 🤔
источник