我正在寻找一种检测点击事件是否在组件外部发生的方法,如本文所述。jQuery最近的()用于查看click事件中的目标是否具有dom元素作为其父元素之一。如果存在匹配项,则单击事件属于子项之一,因此不被视为在组件之外。
因此,在我的组件中,我想将单击处理程序附加到窗口。当处理程序触发时,我需要将目标与组件的dom子代进行比较。
click事件包含“ path”之类的属性,该属性似乎包含事件经过的dom路径。我不确定要比较什么或如何最好地遍历它,并且我认为有人必须已经将其放在聪明的实用程序函数中了……不?
UseOnClickOutside Hook - React 16.8 +
Create a general useOnOutsideClick function
Then use the hook in any functional component.
Link to demo
Partially inspired by @pau1fitzgerald answer.