React Native Android 自定义视图能够以 2 种不同的方式声明事件ViewManager
子类:
- “冒泡”事件通过
getExportedCustomBubblingEventTypeConstants()
- 通过“直接”事件
getExportedCustomDirectEventTypeConstants()
这两种类型的事件有什么区别?
如果我尝试从 Android 自定义视图发送事件onClick(View v)
方法到视图的 JS 表示形式,我将使用以下哪种方法来声明我的自定义事件名称?
跟进:我最终使用“直接”事件将点击从我的 Android 视图发送回我的 JS 组件 https://stackoverflow.com/a/44207488/383414。这非常有效,但我仍然想知道“冒泡”事件是怎么回事。
感谢您在这里的回答https://stackoverflow.com/a/44207488/2881112 https://stackoverflow.com/a/44207488/2881112我能够掌握如何处理 Android 中的本机事件。
经过大量实验后,我发现了这一点。
基本上有两种类型的事件
- 直接事件 - 这似乎只影响自定义本机组件
- 冒泡事件 - 如果本机组件未处理此事件,则该事件将向上冒泡到父组件,直到其得到处理。
Example:
如果我定义getExportedCustomDirectEventTypeConstants
对于我的自定义视图组件上的 onClick 事件CustomView
然后这有效
<CustomView onClick={() => console.log("Hello")}/>
但不是这个
<Pressable onPress={() => console.log("Hello")}>
<CustomView/>
</Pressable>
但如果我用
getExportedCustomBubblingEventTypeConstants
然后这两个都起作用
<CustomView onClick={() => console.log("Hello")}/>
and
<Pressable onPress={() => console.log("Hello")}>
<CustomView/>
</Pressable>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)