React

 

// React와 ReactDOM 라이브러리에서 필요한 함수들을 가져옵니다.
import { useEffect, useRef } from "react";
import { createPortal } from "react-dom";

// Modal이라는 컴포넌트를 정의합니다.
export default function Modal({ children, open, className = "" }) {
  // useRef를 사용하여 dialog 요소에 대한 참조를 생성합니다.
  const dialog = useRef();

  // useEffect를 사용하여 open prop이 변경될 때마다 다이얼로그의 상태를 업데이트합니다.
  useEffect(() => {
    if (open) {
      // open이 true일 경우, dialog를 보여줍니다.
      dialog.current.showModal();
    }
  }, [open]);

  // createPortal을 사용하여 children을 'modal'이라는 id를 가진 DOM 요소 안에 렌더링합니다.
  return createPortal(
    // dialog 요소를 생성하고, useRef로 생성한 dialog에 참조를 연결합니다.
    // className prop을 통해 클래스 이름을 동적으로 할당합니다.
    <dialog ref={dialog} className={`modal ${className}`}>
      {children}  // children prop을 통해 전달된 자식 요소들을 렌더링합니다.
    </dialog>,
    document.getElementById("modal")  // 모달이 렌더링 될 DOM 요소를 지정합니다.
  );
}

 

 

이 코드는 React와 ReactDOM의 기능을 활용하여 모달 컴포넌트를 만드는 방법을 보여줍니다. 

useEffect와 useRef를 사용하여 모달의 상태를 관리하고, createPortal을 사용하여 모달을 DOM의 특정 위치에 렌더링합니다.

이 모달 컴포넌트는 children, open, className 세 가지 props를 받아 사용합니다. children은 모달 내부에 렌더링 될 내용, open은 모달의 보이고/안 보이고 상태, className은 모달에 적용될 CSS 클래스 이름입니다.

 

이 컴포넌트를 사용하면 필요에 따라 쉽게 모달을 생성하고 관리할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

옥반에 진주 굴듯 , 목소리가 맑고 아름다움을 비유하여 이르는 말.

댓글 ( 0)

댓글 남기기

작성