我正在使用react-window
优化自定义下拉菜单组件。下拉菜单使用List
中的react-window
组件来渲染ul
,传递给List
的item组件使用{{ 1}}处理程序已分配(以关闭菜单并选择一个项目)。在我使用li
之前,下拉组件工作正常,但是切换之后,onClick
处理程序不会在每次单击每个react-window
元素时触发。
在Chrome的开发工具中调查onClick
时发现,li
节点首次安装后,React将noop事件处理程序附加到该节点的li
属性,这显然是由于某些iOS Safari错误(here)。一次单击节点后,它消失了,我的li
处理程序正常启动。
如果我将事件更改为onclick
,它可以正常工作,但我不必这样做;我应该能够使用onClick
并可靠地启动它。
我想为此提交一个错误报告,但是我不确定是React的错误还是onMouseUp
的错误。我浏览了onClick
的源代码,渲染item组件似乎并没有做任何奇怪的事情。它仅使用react-window
。显然,react-window
事件适用于某些元素,包括我移至createElement
之前的onClick
元素……某种程度上,noop事件处理程序不会预先影响它们。
是否有人熟悉这种特定的iOS解决方法,为什么它突然破坏了我的事件处理程序?