Size: a a a

2020 October 12

М

Максим in Svelte [svelt]
Pavel 🦇 Malyshev
Дело твоё, но я бы не стал оставлять реализацию где одно действие может тригериться несколькими способами. Кажется раз меню глобальная вещь которая дёргается из разных компонентов на разных уровнях иерархии, то пропс show или условие на show которое создаёт/удаляет компонент, должно быть быть стором.
стором 100%,
источник

М

Максим in Svelte [svelt]
создай в сторе функцию (экшин - вся логика) selectCatagory и переменную selectedID и дергай её selectCatagory(id) со всех мест, что при переключении, что при обновлении страницы, бери из url id, кто подписан на selectedID (меню и т.д.) реактивно перерисуются от состояния стора. + переменную prevID для кнопки "назад".
источник

MZ

Misha Zamkevich in Svelte [svelt]
Pavel 🦇 Malyshev
Дело твоё, но я бы не стал оставлять реализацию где одно действие может тригериться несколькими способами. Кажется раз меню глобальная вещь которая дёргается из разных компонентов на разных уровнях иерархии, то пропс show или условие на show которое создаёт/удаляет компонент, должно быть быть стором.
Слушай, вот я сейчас убрал триггер на ID и поставил везде show. И вроде всё ок.

Я вспомнил, что в первых двух ревизиях были какие-то проблемы с отрисовкой, были вспышки при показе, мне приходилось добавлять tick(), и в итоге я там пришел к триггеру на ID.

В третьей ревизии я всё переписал, сделал без асинхронности и вроде вышеописанных проблем больше нет. Посмотрю как дальше пойдёт.

Конечно несколько тригеров это не норм.
источник

MZ

Misha Zamkevich in Svelte [svelt]
Pavel 🦇 Malyshev
Дело твоё, но я бы не стал оставлять реализацию где одно действие может тригериться несколькими способами. Кажется раз меню глобальная вещь которая дёргается из разных компонентов на разных уровнях иерархии, то пропс show или условие на show которое создаёт/удаляет компонент, должно быть быть стором.
И да, show изначально всегда было стором )
источник

L

Lupusregina[beta] in Svelte [svelt]
жалко, что bind:this после*** use срабатывает
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Lupusregina[beta]
жалко, что bind:this после*** use срабатывает
А что за кейс?
источник

L

Lupusregina[beta] in Svelte [svelt]
Pavel 🦇 Malyshev
А что за кейс?
то есть после
источник

L

Lupusregina[beta] in Svelte [svelt]
Pavel 🦇 Malyshev
А что за кейс?
ну например, надо иметь доступ к ноде в вспомагательных функциях, например
const getPositionCanvas = e => {
 const { x, y } = canvas.getBoundingClientRect()
 return { x: e.clientX - x, y: e.clientY - y }
}
источник

L

Lupusregina[beta] in Svelte [svelt]
в use ты сразу запускаешь какой то сторонний код и сразу возвращаешь destroy
источник

L

Lupusregina[beta] in Svelte [svelt]
этот код дергает getPositionCanvas
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Lupusregina[beta]
этот код дергает getPositionCanvas
Так передать туда ноду из use
источник

L

Lupusregina[beta] in Svelte [svelt]
Pavel 🦇 Malyshev
Так передать туда ноду из use
ну я так и сделал
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Мне кажется не стоит вообще смешивать use и bind:this, а значит не важно в какой последовательности они идут
источник

L

Lupusregina[beta] in Svelte [svelt]
просто есть еще одна функция
источник

L

Lupusregina[beta] in Svelte [svelt]
const normalizeViewPosition = () => {
 const { width, height } = canvasContainer.getBoundingClientRect()

 const [xMin, xMax] = [0, width  - viewWidth ].sort((l, r) => l - r)
 const [yMin, yMax] = [0, height - viewHeight].sort((l, r) => l - r)
 viewX = Math.max(xMin, Math.min(xMax, viewX))
 viewY = Math.max(yMin, Math.min(yMax, viewY))
}
источник

L

Lupusregina[beta] in Svelte [svelt]
сдесь canvasContainer это div-обертка над конвасом
источник

L

Lupusregina[beta] in Svelte [svelt]
и что бы это заработало, надо вообще use убрать, а использовать onMount/onDestroy
источник

L

Lupusregina[beta] in Svelte [svelt]
а use очень удобен (
источник

L

Lupusregina[beta] in Svelte [svelt]
например у меня уже в use функцию сделан resizeObserver
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Lupusregina[beta]
сдесь canvasContainer это div-обертка над конвасом
Почему бы use не поставить на контейнер и уже внутри взять конвас?
источник