javascript - 滚动时关闭下拉菜单

标签 javascript reactjs drop-down-menu antd

我目前正在使用 Ant Design 开发一个项目,在一个页面上我有一个下拉菜单。当您单击菜单时,它会打开下拉菜单,但如果您向下滚动,菜单仍会保持打开状态。我希望在用户向下滚动菜单关闭时实现这一点。

我试图实现一个 handleScroll() 函数,以便与提供的 onVisibleChange 一起使用。但是我不确定我应该在函数中添加什么来让它工作。

handleScroll = (e) => {
window.addEventListener('scroll', () => {
console.log('scrolling');
 })
}

<Dropdown onVisibleChange={visible => this.handleScroll( 
console.log(visible)) } trigger={['click']} overlay={
  <Menu>
    <Menu.Item key="1"
      onClick={() => this.scrollTo(this.whyRef)}>
      <Icon icon={u1F427} /> <strong>WHY</strong>
      </Menu.Item>
     </Menu>
   }>
 <Dropdown>

最佳答案

您需要在构造函数中添加事件监听器并自行处理下拉列表的可见性状态。尝试这样的事情:

class Example extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      visible: false
    };

    window.addEventListener("scroll", this.closeMenu);
  }

  toggleMenu = () => {
    this.setState({ visible: !this.state.visible });
  };

  closeMenu = () => {
    this.setState({ visible: false });
  };

  render() {
    return (
      <div>
        <Dropdown
          overlay={menu}
          onVisibleChange={this.toggleMenu}
          visible={this.state.visible}
          trigger={["click"]}
        >
          <a className="ant-dropdown-link" href="#">
            Click me <Icon type="down" />
          </a>
        </Dropdown>
      </div>
    );
  }
}

工作示例:https://codesandbox.io/s/2ovjzwqz9y

关于javascript - 滚动时关闭下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258562/

相关文章:

javascript - 手动触发一个字段的客户端验证

javascript - 如何在 Eclipse 中编辑 javascript 内容辅助提案?

reactjs - 使用 Monaco 编辑器无法在详细信息列表中导航

javascript - 带有onclick javascript函数的下拉菜单

javascript - 如何使用 jquery 将个人信息从选择选项 ListView 传递到特定输入字段

javascript - CORS 被 node.js 和 socket.io 阻止

javascript - 使用 JQuery 读取 JSON : Field Names

jquery - Bootstrap 下拉菜单无法按正确顺序使用脚本和链接

jquery - React 有像 jQuery 那样的滚动动画吗?

javascript - ClickAwayListener 的回调函数在执行中途停止