@alifd/overlay
Version:
overlay base component
73 lines (63 loc) • 1.66 kB
Markdown
---
title: 弹层嵌套
order: 5
---
有弹层嵌套需求时,请使用 container 属性将第二个弹层渲染到第一个弹层内部, 这样不会因为点击第二个弹窗导致第一个弹窗消失。
```jsx
import { useState } from 'react';
import Overlay from '@alifd/overlay';
const { Popup } = Overlay;
const style = {
width: 400,
height: 100,
padding: 10,
background: '#fff',
borderRadius: 2,
boxShadow: '2px 2px 20px rgba(0, 0, 0, 0.15)',
};
const Demo = () => {
const [followTrigger, setFollowTrigger] = useState(false);
const overlay2 = (
<div style={{ ...style }}>
<Popup
overlay={
<div style={style}>
<p>
挂载容器没有overflow:hidden,
依然超出容器展示,不会因为挂载容器小自动订正位置,viewport 任然为 body
</p>
</div>
}
followTrigger={followTrigger}
>
<button>Open third overlay</button>
</Popup>
<p>Hello World From First Overlay!</p>
</div>
);
const overlay = (
<div style={{ ...style }}>
<Popup overlay={overlay2} followTrigger={followTrigger}>
<button>Open second overlay</button>
</Popup>
<p>Hello World From First Overlay!</p>
</div>
);
return (
<div>
followTrigger:{' '}
<input
type="checkbox"
checked={followTrigger}
onChange={(e) => setFollowTrigger(e.target.checked)}
/>
<br />
<br />
<Popup overlay={overlay}>
<button>Open first overlay</button>
</Popup>
</div>
);
};
ReactDOM.render(<Demo />, mountNode);
```