= true;
</script>
{#if visible}
<p>Some text</p>
{/if}
Не работает и требует перед if вставить хоть какой-нибудь html, а надо просто не вставлять ничего в DOM, если компонент невидимый
А нет варианта вынести if на уровень выше, где компонент подключается?)
Нет это Navigation Bottom, который вешает сам себя на скролл let visible = true let prevScrollPos = window.pageYOffset const handleScroll = event => { let thisScrollPos = window.pageYOffset visible = thisScrollPos < prevScrollPos prevScrollPos = thisScrollPos } onMount(() => window.addEventListener('scroll', handleScroll)) onDestroy(() => window.removeEventListener('scroll', handleScroll))
svelte:window on:scroll bind:scrollY ?
В смысле не работает 0о
В том смысле что код что я приветл требует хоть какого-то html иначе svelte пишет invalid mustache и не собирает компонент
https://svelte.dev/repl/7da7c5a5ae044549ab39aac5a652c862?version=3.31.0
Спасибо поменяю на svelte:window! Но это конечно не решает основной проблемы в нетеребоньканьем DOM если нечего отображать
Так свелтовее или action, но в вашем кейсе достаточно внутри компонента юзать svelte:window
Вы уверены, что не решает?
Тогда нужно переформулировать вопрос. Не в Svelte, а "при использовании N"
:) Ну до этого чата, я не знал что порекомендованный препроцессор немного херит такую возможность как корневая if директива
А под svelte:window on:scroll bind:scrollY имеется ввиду вот так: https://svelte.dev/repl/33730646df8546d9a91e1f669c899b97?version=3.31.0 Это прямо вот совсем свелтовее некуда или еще есть где что улучшить по канону?
Ну в bind:scrollY={scrollY} можно координаты писать и на их разницу тригерить, что надо. А на on:scroll={func} запускать нужную функцию. Ток тут масло масленное вроде... нет возможности вникнуть и написать ваш кейс, но что покрутить написал выше.
Ну кейс примитивный менять visible = scrollY === 0 || scrollYdelta < 0 Просто из-за того что нужна дельта при скроллинге появляется эти onMount, мне кажется проще не сделать
onMount выполняется 1 раз при маунте компонента
Ну да, при восстановлении скроллинга в начале надо сохранить текущий window.scrollY, чтобы корректно считать дельты
Обсуждают сегодня