Featuring Design System
Legacy

CorePortal

포털 컴포넌트

Usage

기본 사용법

import { CorePortal } from '@featuring-corp/components';

<CorePortal containerId="my-portal">
  <div>포털 내용</div>
</CorePortal>

기본 Container ID 사용

import { CorePortal } from '@featuring-corp/components';

<CorePortal>
  <div>포털 내용 (기본 containerId: "portal")</div>
</CorePortal>

모달과 함께 사용

import { useState } from 'react';
import { CorePortal } from '@featuring-corp/components';
import { CoreModal, CoreButton } from '@featuring-corp/components';

const [open, setOpen] = useState(false);

<>
  <CoreButton text="모달 열기" onClick={() => setOpen(true)} />
  {open && (
    <CorePortal>
      <CoreModal
        size="md"
        title="타이틀"
        handleClose={() => setOpen(false)}
      >
        <div>모달 내용</div>
      </CoreModal>
    </CorePortal>
  )}
</>

드롭다운과 함께 사용

import { useState, useRef } from 'react';
import { CorePortal } from '@featuring-corp/components';
import { CoreDropdown } from '@featuring-corp/components';

const [open, setOpen] = useState(false);
const ref = useRef(null);

<>
  <button ref={ref} onClick={() => setOpen(!open)}>
    드롭다운 열기
  </button>
  {open && (
    <CorePortal>
      <CoreDropdown
        open={open}
        handler={setOpen}
        placement="bottom-center"
        targetRef={ref}
      >
        <div>드롭다운 내용</div>
      </CoreDropdown>
    </CorePortal>
  )}
</>

커스텀 Container ID

import { CorePortal } from '@featuring-corp/components';

// HTML에 <div id="custom-portal"></div>가 있어야 함
<CorePortal containerId="custom-portal">
  <div>커스텀 포털 내용</div>
</CorePortal>

Props

ComponentPropsWithoutRef<'div'> 타입을 확장한 컴포넌트입니다.

Prop

Type