Popover
Props
Prop Name | Type | Required | Default | Description |
---|---|---|---|---|
visible | bool | 受控,控制弹出层展示 | ||
defaultVisible | bool | false | 非受控,是否默认展示弹出层 | |
onVisibleChange | func | () {} | 弹出层显示隐藏时触发 | |
trigger | arrayOf | ['hover'] | 如何触发弹出层,focus 需要注意被包裹元素必须能触发 focus 事件,如链接、按钮、input 等 | |
alignPoint | bool | 根据鼠标位置定位 | ||
placement | enum | 'bottomLeft' | 位置 | |
align | object | 自定义定位 | ||
stretch | arrayOf | 尺寸自适应,'width', 'minWidth', 'height', 'minHeight' 或混合使用 | ||
popup | node | 弹出层内容 | ||
popupClassName | string | '' | 弹出层的类名 | |
popupStyle | object | {} | 弹出层的样式 | |
zIndex | number | 弹出层的 z-index | ||
getPopupContainer | func | 自定义弹出层容器 | ||
forwardPopupContainer | union | 是否使用最上层传入的安全容器,如果为 function,在没有找到安全容器时将会使用该 function 作为 getPopupContainer 的值 | ||
children | element | required | 需要对子元素进行定位,所以只接收一个有效 react 元素(不接收文本节点) | |
animation | enum | 'fade' | 动画名称,slide-up 只支持上下方向的弹窗 | |
forceAlignWhenScroll | bool | true | 滚动时强制重新定位 |
说明
- 这是 Popover 组件,弹出层功能型组件
- 使用弹出层时需要注意弹出层的容器,如果弹出层的容器为 overflow 容器且具有定位属性或在其内部或嵌套等情况(以下简称 overflow 容器),弹出内容会自动计算定位避开滚动或隐藏,防止被遮挡,但是某些情况下会导致定位的偏移,所以需要保证容器能够完整的显示弹出层,或者将容器设置到 overflow 容器的外部。
- Popover 默认的弹出层容器为 body,可使用 getPopupContainer 来自定弹层的容器,或者使用 forwardPopupContainer 自动避开本组件库内组件的 overflow 容器(如 Card,Table 等)。
- Modal、Drawer 较为特殊,会中断 forwardPopupContainer,从而避免找到上层非同 dom 级的容器