【React】select和DatePicker组件不跟随页面滚动

【React】解决antd中,select和DatePicker组件不跟随页面滚动的问题

在开发过程中,经常会使用到Select、DatePicker等组件,当这些组件在可滚动的区域内滚动时,你会发现该组件的选项框也会跟着滚动,产生分离,如下图所示
在这里插入图片描述

解决方法
antd的官方API给我们提供了getPopupContainer属性,该属性是菜单渲染的父节点,默认是body。只要添加该属性,设置好父节点,就可以解决这种分离。

// triggerNode:当前元素的节点
// triggerNode.parentNode:最近的父级元素节点

// 1、在Select组件中:
添加“getPopupContainer={triggerNode => triggerNode.parentNode}” ,使其固定在父元素中

// 2、在日期DatePicker组件中:
使用 “getCalendarContainer={triggerNode => triggerNode.parentNode}

设置完之后在antd3.x是正常的,antd版本是4.x的DatePicker和Cascader可能还是会分离。
我们可以先打印一下这三个组件的triggerNode以及triggerNode.parentNode进行对比观察。这时就能发现这三个组件的triggerNode.parentNode存在差异,DatePicker和Cascader直接找到了最外层的div,他的节点还是在最外层,导致分离。
解决方法
我可以直接把定位定到本身节点上,就可以解决该问题


getPopupContainer={triggerNode => triggerNode}

效果如图所示
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值