Size: a a a

2021 February 14

A

Arushwl in Svelte [svelt]
А какой же шейкается?
источник

DK

Dan Kozlov in Svelte [svelt]
Arushwl
А какой же шейкается?
Много какой. Вопрос некорректен.
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Arushwl
Не показывать компонент до загрузки картинок...
Вообще можно просто в if обёрнуть сам viewpoint, но тогда параллельно не будет грузиться да
источник

A

Arushwl in Svelte [svelt]
Pavel 🦇 Malyshev
Тогда надо иметь список всех компонентов всего дерева. Столько рантайма ради отсутствия нескольких прелоадеров? 🤔
Вот сейчас как раз в процессе обдумывания... и решил всё же разделить на разные preload() по месту...
источник

A

Arushwl in Svelte [svelt]
Pavel 🦇 Malyshev
Вообще можно просто в if обёрнуть сам viewpoint, но тогда параллельно не будет грузиться да
Да. Это нужен внутри хук... если что придумаю - пульну
источник

A

Arushwl in Svelte [svelt]
По сути есть вариант тот же wait = bool/num ...🤔
источник

A

Arushwl in Svelte [svelt]
Аж 3 ступени ожидания выходит - delay, loading, wait...
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
мне кажется ты что-то путаешь)
источник

A

Arushwl in Svelte [svelt]
Это я могу 🤓
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
viewpoint делает ровно 2 вещи:

1) переключает компоненты (монтирует их), причем единообразно как для статических, так и динамических компонентов (через import()). также проксирует все дополнительные пропсы на теге Viewpoint непосредственно в компонент.
2) при наличии внутри монтируемого компонента preload() в context=module, перед его монтированием резолвит результат этой функции (объект или промис с объектом) и раскатывает этот объект по пропсам компонента. то есть компонент монтируется уже сразу с данными.
источник

PM

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

PM

Pavel 🦇 Malyshev in Svelte [svelt]
так вот промис имеет состояния resolved - тогда показываем компонент, rejected - тогда показываем контент error слота. и pending - тогда казалось бы показываем контент слота loading
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
однако, чаще всего компоненты прилетают супер-быстро, но бывает не так быстро как свелт может отрисовать слот
источник

A

Arushwl in Svelte [svelt]
Pavel 🦇 Malyshev
так вот промис имеет состояния resolved - тогда показываем компонент, rejected - тогда показываем контент error слота. и pending - тогда казалось бы показываем контент слота loading
Так
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
из-за этого loading слот мигает на секунду и тут же заменяется компонентом. это лажа
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
в этом нам помогает пропс delay, он откладывает loading слот на несколько ms чтобы не показывать лоадер вообще, если все летает
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
но бывает и обратная ситуация, когда компонент или preload (один идут друг за другом) поззадержался
источник

PM

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

PM

Pavel 🦇 Malyshev in Svelte [svelt]
тогда есть опциональная возможность выставить timeout пропс
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
и в слот waiting поместить дополнительный контент, которй будет каким-то образом просить юзера “подождать еще, мол все норм, мы работаем и не зависли”. то есть после того как выйдет timeout, вместо loading слота показывается waiting слот. конечно если он установлен и timeout !== 0 (ноль отключает эту фичу, значение по-умолчанию)
источник