天天看點

全屏處理後,antd的Select元件不顯示下拉框

全屏處理後,antd的Select元件不顯示下拉框

最近做全屏功能的時候遇到這個問題:

非全屏下Select元件下拉框是正常顯示的。

但是在全屏處理後,Select元件不顯示彈出框的下拉選項。

原因:

Select元件有個API:getPopupContainer

Ant Design官方文檔給出的用途解釋為:“菜單渲染父節點。預設渲染到 body 上,如果你遇到菜單滾動定位問題,試試修改為滾動的區域,并相對其定位”。

同時官網也強調一個特殊情況需要注意:“如果發現下拉菜單跟随頁面滾動,或者需要在其他彈層中觸發 Select,請嘗試使用 getPopupContainer={triggerNode => triggerNode.parentNode} 将下拉彈層渲染節點固定在觸發器的父元素中”。

也就是說,Select 的下拉菜單會預設渲染到 body 上。當你設定了某個元素為全屏的時候,就會被擋住。你可以在全屏的使用 Select 的 getPopupContainer,指定菜單的渲染父節點到被設定為全屏的元素上。

其他 Popop 之類的都同理。

解決方法:

在Select元件中添加getPopupContainer={triggerNode => triggerNode.parentNode}屬性即可

全屏處理後,antd的Select元件不顯示下拉框