[javascript] Svelte에서 모달 및 팝업 창을 구현하는 방법은 어떻게 되나요?

먼저, Svelte 프로젝트에 <svelte:modal>을 설치해야 합니다. 다음 명령어를 사용하여 설치하세요:

npm install --save-dev svelte-modal

그런 다음, 모달 컴포넌트를 생성합니다. 아래 예제는 “Modal.svelte”라는 파일로 저장됩니다:

<script>
  import { Modal } from "svelte-modal";

  export let isOpen = false;
  export let message = "";

  function closeModal() {
    isOpen = false;
  }
</script>

<svelte:modal 
  title="Modal Title"
  bind:isOpen={isOpen} 
  on:close={closeModal}
>
  <h3 slot="header">Modal Header</h3>
  <div slot="content">
    <p>{message}</p>
  </div>
  <div slot="footer">
    <button on:click={closeModal}>Close</button>
  </div>
</svelte:modal>

위 코드에서는 isOpen 프로퍼티와 message 프로퍼티를 가진 모달 컴포넌트를 정의합니다. isOpen은 모달이 열려있는지를 나타내는 플래그이고, message는 모달 내용을 나타냅니다.

이제, 모달을 사용하는 부모 컴포넌트에서 <Modal> 컴포넌트를 렌더링할 수 있습니다. 아래 예제는 “App.svelte”라는 파일로 저장됩니다:

<script>
  import Modal from "./Modal.svelte";

  let showModal = false;
  let modalMessage = "Hello, World!";
</script>

<main>
  <button on:click={() => showModal = true}>Open Modal</button>
  
  {#if showModal}
    <Modal {isOpen} {message} on:close={() => showModal = false}/>
  {/if}
</main>

위 코드에서는 <Modal> 컴포넌트를 사용하여 모달을 렌더링합니다. showModal 상태가 true로 변경되면 모달이 열리고, false로 변경되면 모달이 닫힙니다. modalMessage는 모달 내용을 설정하기 위해 사용됩니다.

이제 Svelte 프로젝트를 실행하면 “Open Modal” 버튼이 있고, 버튼을 클릭하면 “Modal Title”과 “Hello, World!” 메시지가 표시되는 모달 창이 열립니다.

이와 같은 방법으로 Svelte에서 모달 및 팝업 창을 구현할 수 있습니다. Svelte의 <svelte:modal> 컴포넌트와 조건부 렌더링을 활용하여 원하는 스타일 및 동작을 가진 모달 창을 구현할 수 있습니다.

더 많은 정보를 원하시면, Svelte 공식 문서를 참조하시기 바랍니다.