Antd4.X种组件Select,Menu,DatePicker等弹出层组件不跟随页面滚动的问题

1,985 阅读1分钟

问题描述

改项目使用Antd4.2.2的版本,在使用弹出层组件时,当滑动滚动条,弹出层组件不随点击的input框移动而产生移动。(如下图)

涵盖的组件包括:

  • Menu
  • Dropdown
  • DatePicker
  • TimePicker
  • Select
  • Popover
  • Tooltip
  • Popconfirm

问题解决

使用组件时加入属性

getPopupContainer={triggerNode => triggerNode.parentNode}

该属性可以在Antd4.x官网的Select组件中找到

示例链接:codesandbox.io/s/4j168r7jw…

Select中解决

 <Select defaultValue="lucy" getPopupContainer={triggerNode => triggerNode.parentNode}>
        <Option value="jack">Jack</Option>
        <Option value="lucy">Lucy</Option>
        <Option value="disabled" disabled>
          Disabled
        </Option>
        <Option value="Yiminghe">yiminghe</Option>
      </Select>

DatePicker中解决

<DatePicker getPopupContainer={triggerNode => triggerNode.parentNode}/>

Dropdown中解决

  <Dropdown overlay={menu} trigger={['click']} getPopupContainer={triggerNode => triggerNode.parentNode}>
              <PlusOutlined onClick={e => e.preventDefault()} style={{ margin: "4px" }} />
  </Dropdown>

Menu中解决

 <Menu onClick={handleClick} selectedKeys={[current]} mode="horizontal" getPopupContainer={triggerNode => triggerNode.parentNode}>
      <Menu.Item key="mail">
        <MailOutlined />
        Navigation One
      </Menu.Item>
      <Menu.Item key="app" disabled>
        <AppstoreOutlined />
        Navigation Two
      </Menu.Item>
      <SubMenu
        title={(
          <span className="submenu-title-wrapper">
            <SettingOutlined />
            Navigation Three - Submenu
          </span>
        )}
       
      >
        <Menu.ItemGroup title="Item 1" >
          <Menu.Item key="setting:1">Option 1</Menu.Item>
          <Menu.Item key="setting:2">Option 2</Menu.Item>
        </Menu.ItemGroup>
        <Menu.ItemGroup title="Item 2">
          <Menu.Item key="setting:3">Option 3</Menu.Item>
          <Menu.Item key="setting:4">Option 4</Menu.Item>
        </Menu.ItemGroup>
      </SubMenu>
      <Menu.Item key="alipay">
        <a href="https://ant.design" target="_blank" rel="noopener noreferrer">
          Navigation Four - Link
        </a>
      </Menu.Item>
    </Menu>

在Popover中解决

<Popover content={content} title="Title" getPopupContainer={triggerNode => triggerNode.parentNode}>
      <Button type="primary">Hover me</Button>
</Popover>

在Tooltip中解决

    <Tooltip title={t('文字提示')} getPopupContainer={triggerNode => triggerNode.parentNode}>
      <span>{t('鼠标移过来')}</span>
    </Tooltip>

在Popconfirm中解决

<Popconfirm
      title="Are you sure delete this task?"
      onConfirm={confirm}
      onCancel={cancel}
      okText="Yes"
      cancelText="No"
      getPopupContainer={triggerNode => triggerNode.parentNode}
    >
      <a href="#">Delete</a>
</Popconfirm>

参考文章地址

blog.csdn.net/iceking66/a…

blog.csdn.net/iceking66/a…