var Rc = <MyReactComponent
onChange={(e) => {console.log(e);}
onClick={(e) => { workIt(); }} />;
如何获取组件Rc的侦听器列表['onChange','onClick']。
我看到与在DOM节点上查找侦听器相关的问题... How to find event listeners on a DOM node using JavaScript;显然不存在像getEventListeners()这样的简单调用,除了addEventListener()之外,DOM还支持DOES。
是否有一种干净而简单的方法来获取React组件的侦听器?
2条答案
按热度按时间3npbholx1#
在React中没有任何内置的方法来实现这一点,但是您可以创建一个简单的函数来实现这一点:
在本例中,我们过滤所有以“on”开头的
getListeners
属性,因为React中的每个事件侦听器都以“on”开头。您可以通过显式过滤React中实际支持的事件侦听器来使其更加健壮:https://reactjs.org/docs/events.html#reference同时还要过滤每个道具的值以确保它是一个函数。
cbjzeqam2#
您的事件处理程序将被传递SyntheticEvent的示例,SyntheticEvent是一个跨浏览器的 Package 器,用于 Package 浏览器的本机事件。它与浏览器的本机事件具有相同的接口,包括stopPropagation()和preventDefault(),但这两个事件在所有浏览器中的工作方式相同。
支持的事件React规范化事件,以便它们在不同浏览器中具有一致的属性。
下面的事件处理程序由冒泡阶段中的事件触发。若要为捕获阶段注册事件处理程序,请将Capture追加到事件名称;例如,您可以使用onClickCapture来处理捕获阶段的click事件,而不是使用onClick。
1.剪贴板事件2.合成事件3.键盘事件4.焦点事件5.窗体事件6.一般事件7.鼠标事件8.指针事件9.选择事件10.触摸事件11.UI事件12.滚轮事件13.媒体事件14.图像事件15.动画事件16.过渡事件
您还可以创建如下OnChange事件: