5.5.2.56. useOverlay
useOverlay hook 将组件直接插入到 web 控制台页面结构之外的 DOM 中。这允许组件使用 CSS 自由样式和定位。例如,要关闭 UI 右上角的覆盖: style={{ position: 'absolute', right: '2rem', top: '2rem', zIndex: 999 }}。通过多次调用 useOverlay,可以添加多个覆盖。closeOverlay 功能被传递给 overlay 组件。调用它会从 DOM 中删除组件,而不影响 使用Overlay 添加的任何其他覆盖。可以将其他 prop 传递给 使用Overlay,它们将传递到 overlay 组件。
Example
const OverlayComponent = ({ closeOverlay, heading }) => {
return (
<div style={{ position: 'absolute', right: '2rem', top: '2rem', zIndex: 999 }}>
<h2>{heading}</h2>
<Button onClick={closeOverlay}>Close</Button>
</div>
);
};
const ModalComponent = ({ body, closeOverlay, title }) => (
<Modal isOpen onClose={closeOverlay}>
<ModalHeader title={title} />
<ModalBody>{body}</ModalBody>
</Modal>
);
const AppPage: React.FC = () => {
const launchOverlay = useOverlay();
const onClickOverlay = () => {
launchOverlay(OverlayComponent, { heading: 'Test overlay' });
};
const onClickModal = () => {
launchOverlay(ModalComponent, { body: 'Test modal', title: 'Overlay modal' });
};
return (
<Button onClick={onClickOverlay}>Launch an Overlay</Button>
<Button onClick={onClickModal}>Launch a Modal</Button>
)
}