React Portal

sxxng_ju·2023년 3월 2일
0

Web

목록 보기
1/4

React에서 Modal, Popup Drawer 등을 구현할 때 컴포넌트 내부에서 구현을 하다보니 구조적인 관점에서 모달이 별도로 렌더링 된 것인지 알지 못하게 됩니다. 따라서 z-index를 사용하여 표현하거나 스타일링을 별도로 설정해야 합니다.

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

<html>
  <body>
    <div id="root">...</div>
    <div id="backdrop">...</div>
    <div id="modal">...</div>
  </body>
</html>

Portal을 Modal은 app의 자식 컴포넌트지만 렌더링을 root와 형제 관계인 곳에서 하게 됩니다.

Portal의 사용 방법은 다음과 같습니다.

// Modal.js
function Modal() {
  <>
    {ReactDom.createPortal(
      <BackDrop />, document.getElementById("backdrop")	
    )}
	{ReactDom.createPortal(
      <Modal />, document.getElementById("modal")	
    )}
  </>
}
  

결론: Portal의 핵심은 렌더링된 HTML의 내용을 다른 곳으로 옮겨주는 것입니다.

0개의 댓글