javascript 我想在滚动到菜单列表之外时关闭React选择菜单

5kgi1eie  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(139)

官方React选择文档中有一个closeMenuOnScroll属性,其声明如下:closeMenuOnScroll支柱
然而,当我在组件上设置closeMenuOnScroll={() => true} prop时,即使我在菜单内部滚动,它也会关闭菜单(我不能滚动菜单选项,因为它是自动关闭的)。我试图实现的是,当我在react-select组件内部滚动时,遍历(滚动)菜单项,如果我退出菜单,则关闭菜单。
谢谢。

<Select
   options={options}
   onChange={handleChange}
   closeMenuOnScroll={() => true}
/>
balp4ylt

balp4ylt1#

From the documentation:如果你传递了一个函数,当函数返回true时菜单就会关闭,这就是你的例子,菜单在任何滚动动作时都会关闭,即使是在选择菜单中。
如果你不给prop传递函数,而只传递true/false,那么菜单应该只在主体滚动时关闭。
如果您想要更精细的控制,例如当您的选择位于可滚动div中而不是窗口/正文中时:使用该函数,但在其中进行一些检查。

closeMenuOnScroll={e => {
if (e.target === refToYourScrolleableContainer) {
  return true
} else {
  return false
}

}}
您需要在给予给closeMenuOnScroll属性的函数中检查scroll事件,并确定滚动是来自窗口还是主体(或容器),然后返回true。否则返回false并且不关闭菜单。
因此,我想解决问题的最简单方法是执行closeMenuOnScroll={true}

相关问题