ilokesto

OverlayHost

OverlayHost는 useOverlayItems()로 현재 item 목록을 읽고 각 item마다 OverlayItemRenderer를 렌더링합니다. renderer는 adapters[item.type]을 찾고, item id에 묶인 close와 remove callback을 만든 뒤 OverlayRenderProps와 item.props를 어댑터에 전달합니다.

const renderProps = {
  id: item.id,
  isOpen: item.status === 'open',
  status: item.status,
  close,
  remove,
};

return <Adapter {...renderProps} {...item.props} />;

일반적으로 OverlayHost를 직접 마운트하지 마세요. OverlayProvider와 createOverlayContext()가 반환하는 모든 provider가 이미 host를 포함하고 context-getter prop은 internal composition detail입니다. host dispatch나 알 수 없는 type의 item이 왜 아무것도 렌더링하지 않는지 이해할 때 이 문서를 보세요. 어댑터가 없으면 null을 렌더링합니다. 개발 환경에서는 마운트된 item identity마다 item의 id와 type을 포함한 오류 진단을 한 번 출력하고, production에서는 아무 진단도 출력하지 않습니다. host는 item을 자동으로 resolve, reject, remove하지 않으므로 애플리케이션 코드가 명시적으로 remove 또는 clear할 때까지 item은 store에 남고 display() promise도 pending 상태를 유지합니다.

실무 메모

레퍼런스 문서는 런타임 계약을 정확히 설명합니다. 가이드에서는 이 API를 제품별 helper로 감쌀 수 있지만, 같은 lifecycle 언어를 유지해야 합니다. open은 item을 만들고, close는 closing 상태를 시작하며, remove는 item을 완료하고 삭제하고, clear는 provider 범위의 모든 대기 중인 overlay를 끝냅니다.

목차