[TIL] React - Portal 활용한 모달

2022. 6. 7. 00:20·Archive
반응형

 

 

 

     

    Portal

     

     

    Portal은 부모 컴포넌트의 DOM 계층 구조 바깥에 있는 DOM 노드로 렌더링 하는 방법이다.

    첫번째 인자는 렌더링 할 요소이고, 두 번째 인자는 DOM 엘리먼트 이다.

    ReactDOM.createPortal(child, DOMelement)

     

     

    🔻 Portal을 활용하여 Modal 만들기

     

    - html에 새로운 DOM 요소를 만든다.

      <body>
        <div id="overlays"></div>
        <div id="root"></div>
      </body>

     

    - ReactDOM을 import하고 <ReactDOM.createPortal>의 첫번째 인자로

       backdrop(요소외의 배경을 검정으로 해줄 요소) / modal로 띄워줄 컴포넌트를 넣어주고

       두 번째 인자로 위에서 만든 overlays DOM을 지정해준다.

    import ReactDOM from 'react-dom';
    
    const portalElement = document.getElementById('overlays');
    
    const Modal = (props) => {
      return (
        <>
          {ReactDOM.createPortal(<Backdrop />, portalElement)}
          {ReactDOM.createPortal(
            <ModalOverlay>{props.children}</ModalOverlay>,
            portalElement
          )}
        </>
      );
    };
    
    export default Modal;

     

     

     

     

     

     

     

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

    'Archive' 카테고리의 다른 글

    [React] React Query로 서버 상태 관리 기초 개념  (0) 2022.07.28
    [TIL] react native > .gitattributes / project.pbxproj  (1) 2022.06.29
    [TIL] React Native - M1 setting (Rosetta 없이)  (0) 2022.05.23
    [GIT] git 기본사용 reset / revert / merge / rebase  (0) 2022.05.15
    [React] React Hook Form  (0) 2022.05.08
    'Archive' 카테고리의 다른 글
    • [React] React Query로 서버 상태 관리 기초 개념
    • [TIL] react native > .gitattributes / project.pbxproj
    • [TIL] React Native - M1 setting (Rosetta 없이)
    • [GIT] git 기본사용 reset / revert / merge / rebase
    manon_e
    manon_e
    • manon_e
      개발 블로그
      manon_e
    • 전체
      오늘
      어제
      • 💻 (103)
        • Frontend (10)
          • React | Next.js (6)
          • Memo (4)
        • CS (2)
          • 네트워크 (0)
          • 자료구조 + 알고리즘 (0)
          • 컴퓨터 구조 + 운영체제 (2)
        • Cloud & Infra (0)
        • Project (4)
        • Archive (87)
    • 인기 글

    • 태그

      vscode
      Component
      REACT
      typeScript
      axios
      비동기
      ES6
      Prisma
      JavaScript
      Node
      정규표현식
      오블완
      티스토리챌린지
      pre-rendering
      getstaticprops
      git
      useEffect
      Next.js
      node.js
      State
    • hELLO· Designed By정상우.v4.10.3
    manon_e
    [TIL] React - Portal 활용한 모달
    상단으로

    티스토리툴바