개발하자

스벨테에서 상위 구성 요소 마운트 및 파괴에서 전환 애니메이션을 비활성화하는 방법은 무엇입니까?

Cuire 2023. 7. 9. 03:12
반응형

스벨테에서 상위 구성 요소 마운트 및 파괴에서 전환 애니메이션을 비활성화하는 방법은 무엇입니까?

나는 지금 햄버거 버튼을 클릭하면 펼치거나 접을 수 있는 메뉴를 가지고 있다. 메뉴의 기본 상태는 확장됨을 의미하지만 메뉴가 있는 다른 경로로 이동하면 축소된 애니메이션이 재생됩니다. 다음은 샘플 코드입니다:

<script>
 import { slide } from 'svelte/transition';
 let isExpanded = true; 
</script>

<button on:click={()=>isExpanded=!isExpanded}>Expand/Collapse</button>

{#if isExpanded}
  <nav transition:slide>
   Content
  </nav>
{/if}

<a href="/some-page">There is no menu in this page</a>

다음은 코드의 현재 동작입니다:

페이지 로드/재로드 시 메뉴 확장 전환이 재생되고(이상하게는 가끔만 실행됨), 링크를 클릭하면 리디렉션이 실행되는 동안 메뉴 축소 전환이 몇 초 동안 재생됩니다.

나는 이것이 버그인지 아니면 내 구현에 잘못된 것인지 확신할 수 없다. 어느 경우든 이에 대한 해결책을 제공해 주시면 감사하겠습니다.

잘 부탁드립니다!




인스벨트 전환은 구성 요소가 마운트(돔에 추가)되거나 제거(돔에서 제거)된 경우에만 트리거되므로 마운트/파괴 주기에서 전환을 비활성화하는 유일한 방법은 이를 사용하지 않는 것입니다.




전환에서 스코프를 사용하여 요소가 생성/삭제될 때만 적용되고 상위 요소가 생성/삭제될 때는 적용되지 않도록 할 수 있습니다.

{#if isExpanded}
  <nav transition:slide|local>
   Content
  </nav>
{/if}

새로운 경로로 이동하는 사용 사례가 구현되는 방식에 따라 사용자에게 효과가 있을 수도 있고 그렇지 않을 수도 있습니다.

나는 이것과 혼합된 결과를 얻었고, 최근 스벨테 버전의 사용과 관련하여 몇 가지 버그 수정이 있었다.

https://svelte.dev/svd/svd-directions #transition-modies

2023-06-23 편집:

Svelte 4의 경우 스코프는 전환용입니다.

사용자를 전역으로 설정하려면 를 사용합니다.


반응형