강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

송현정님의 프로필 이미지
송현정

작성한 질문수

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

(7.1) 포스트 추가 UI 구현하기

전역 모달이 여러 개일 경우 모달 프로바이더는 몇 개가 필요한가요?

해결된 질문

작성

·

49

·

수정됨

0

전역 모달을 2개 쓰고 싶어서 일단 스토어 2개를 만들었는데요. 모달 프로바이더도 2개를 만들어야하는지, 아니면 하나의 모달 프로바이더에 2개 모달을 모두 넣어도 되는지 궁금합니다. 그리고 만약 하나의 모달 프로바이더에 두 모달을 넣는다면 어떻게 코드를 작성해야 하는지 궁금합니다.

// 1번
export default function ModalProvider({ children }: { children: ReactNode }) {
  return (
    <>
      {createPortal(
        <>
          <AModal />
          <BModal />
        </>,
        document.getElementById("modal-root")!,
      )}
      {children}
    </>
  );
}

// 2번
export default function ModalProvider({ children }: { children: ReactNode }) {
  return (
    <>
      {createPortal(<AModal />, document.getElementById("modal-root")!)}
      {createPortal(<BModal />, document.getElementById("modal-root")!)}
      {children}
    </>
  );
}

퀴즈

모달의 CSS/Z-index 충돌을 방지하는 React 기능은 무엇일까요?

ReactDOM.createPortal

React.Fragment

React.Context

useImperativeHandle

답변 1

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 송현정님 이정환입니다

하나의 모달 프로바이더에 두개의 모달을 넣으시면 됩니다! 모달 프로바이더는 그저 모달들을 App 컴포넌트 아래에 렌더링 시켜주기 위한 역할만 하기 때문이에요 😀

코드 작성 방법은 1번으로 하시면 됩니다. modal-root 라는 id를 갖는 div 태그 아래에 컴포넌트를 렌더링 시키는게 목적이기 때문에 2번처럼 각각 createPortal 메서드를 사용해 렌더링 하실 필요는 없습니다.

송현정님의 프로필 이미지
송현정

작성한 질문수

질문하기