我创建了一个代码沙箱来演示这个问题: https://codesandbox.io/s/cocky-wu-mibxl
由于某种原因,下拉列表后面的链接上的 onClick 事件处理程序在下拉列表打开时未触发,我不知道为什么。我希望你能在这里帮助我。
mousedown 事件通常在单击/鼠标向上之前发生很多(>50ms(,在这种情况下,dom 已更改,您单击的元素不在开始单击的位置(鼠标按下(并且没有收到单击事件。您可以向useOnClickOut cb调用添加超时,但这非常不可靠。
Javascript是一种单线程语言。因此,要关闭<Dropdown>
列表,您需要先关闭alert()
框。您将得到的最接近的是评论中的解决方法,或者您可以将单击链接的操作更改为OnMouseUp
而不是OnClick
.无论哪种方式,您仍然需要关闭警报框才能继续执行。