[Sveltekit] 버튼 hover시 +page.server.js 실행을 막는 법

2024. 6. 17. 02:24·개발 아카이브/SVELTEKIT
반응형

 

Sveltekit에서 버튼이나 a tag에 라우터 url이 걸려 있으면,

그 버튼을 hover만 해도, 라우터에 걸린 +page.server.js 가 실행됩니다.

위의 코드를 보면 href에 user 라우터가 걸려있습니다.

user 라우터에는 +page.server.js 가 있습니다.

위에서 말한대로 버튼을 hover만 해도, +page.server.js 가 실행됩니다.

 

SvelteKit에서 버튼을 호버했을 때 그 버튼을 클릭하면,

가는 페이지의 +page.server.js의 load 함수가 실행되는 것은

의도된 동작입니다.

 

 

왜 그럴까요?

SvelteKit이 페이지 전환을 미리 준비하기 위해 preload를 수행합니다.

preload은 사용자가 링크나 버튼을 호버했을 때, 해당 링크가 가리키는 페이지를 미리 로드하여 사용자 경험을 향상시키는 기술입니다. SvelteKit은 기본적으로 이 기능을 활성화하여 페이지 전환을 더 빠르게 만듭니다.

 

https://kit.svelte.dev/docs/link-options#data-sveltekit-reload

 

Link options • Docs • SvelteKit

Link options Edit this page on GitHub On this page On this page In SvelteKit, elements (rather than framework-specific components) are used to navigate between the routes of your app. If the user clicks on a link whose href is 'owned' by the app (as oppose

kit.svelte.dev

 

그러나 만약 +page.server.js에서 api서버로 데이터를 호출하는 로직이 있다면, api서버는 잦은 호출로 부하를 받을 수 있습니다. 왜냐하면 마우스가 버튼을 호버할때마다, 위처럼 preload가 되기 때문이죠.

 

 

버튼을 hover하면 +page.server.js 실행을 막는 법

src 폴더 아래 app.html 가 있습니다. 이 안에 body에 data-sveltekit-preload-data 라는 속성이 있습니다.

아마 data-sveltekit-preload-data가 "hover"로 되어 있을 것입니다.

위의 사진처럼, data-sveltekit-preload-data="hover"를 제거해주세요.

그러면 hover 할때 +page.server.js가 실행되지 않습니다.

 

 

대신 페이지 전환이 느려집니다.

data-sveltekit-preload-data="hover" 로 되어 있다면, 버튼을 hover 할 때마다 데이터를 미리 불러옵니다.

hover를 통해 미리 데이터를 불러온 후, 화면전환시 미리 준비한 데이터를 표시하기 때문에 즉각적인 페이지 전환이 됩니다.

 

그 예시를 아래 튜토리얼에서 확인할 수 있습니다.

https://learn.svelte.dev/tutorial/preload

 

Welcome to Svelte • Svelte Tutorial

Welcome to the Svelte tutorial! This will teach you everything you need to know to easily build web applications of all sizes, with high performance and a small footprint. You can also consult the API docs and the examples, or — if you're impatient to st

learn.svelte.dev

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발 아카이브 > SVELTEKIT' 카테고리의 다른 글

Svelte와 vite로 CSR 개발 환경 세팅  (1) 2023.12.05
'개발 아카이브/SVELTEKIT' 카테고리의 다른 글
  • Svelte와 vite로 CSR 개발 환경 세팅
운클라우드
운클라우드
프로그래밍, 디자인 및 각종 이야기와 리뷰를 담는 블로그
  • 운클라우드
    Wooncloud Blog
    운클라우드
    • 분류 전체보기
      • 이야기
        • 일기
        • 개발일지
        • 제품 리뷰
        • 기타
      • 정보
        • 유용한 사이트
      • 개발 아카이브
        • HTML, CSS
        • Javascript
        • SVELTEKIT
        • Node Js
        • JAVA
        • Spring
        • 코드 저장소
        • 라이브러리
        • 개발 관련 지식
        • AWS, Cloud, Server
        • DATABASE
      • 스터디
        • 정보처리기사
        • 친절한 SQL 튜닝 스터디
  • 블로그 메뉴

    • 홈
    • 방명록
    • 운구름 웹
    • 벨로그
    • 깃허브
    • 리틀리
    • 도시부엉
  • 최근 글

  • 공지사항

  • 최근 댓글

  • 인기 글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.4
운클라우드
[Sveltekit] 버튼 hover시 +page.server.js 실행을 막는 법
상단으로

티스토리툴바