ant design select组件 解决选项框随页面滚动分离问题

在ant design 使用过程中,发现页面内容超过一屏会出现选项框跟随滚动而滚动
其实这是官方组件存在的问题,

getPopupContainer 菜单渲染父节点,默认渲染到 body 上。

使用getPopupContainer属性: select组件,Cascader组件

使用getCalendarContainer属性: DatePicker****组件

在antd的每个组件api中都有说明是使用getPopupContainer还是getCalendarContainer

1,getPopupContainer属性的,可以直接使用 getPopupContainer={triggerNode => triggerNode.parentNode}

2,**getCalendarContainer属性的,**默认为 body 上新建 div,可能不需要设置这个属性。如果需要设置可以按照上文中那样设置

使用 getPopupContainer={triggerNode => triggerNode.parentElement} 将下拉弹层渲染节点固定在触发器的父元素中。

参考文章:
文章参考1
文章参考2

  <Form.Item name="onArea" label="出发区域">
    <Select
      getPopupContainer={(triggerNode) => triggerNode.parentNode}
      showSearch={true}
      filterOption={(input, option: any) => option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
      notFoundContent={null}
      placeholder="请选择出发城市后操作"
      onSelect={(id) => {
        form.resetFields(['onStation']); // 重置
        dispatch(getstationOptions(id)); // 更新站点
      }}
      allowClear
    >
      {allbeginAreaOptions.map((item: areaListType) => (
        <Option key={item.id} value={item.id}>
          {item.name}
        </Option>
      ))}
    </Select>
  </Form.Item>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值