"鼓泡" vs"直接" React Native Android自定义视图中的事件

时间:2017-05-26 11:22:31

标签: android react-native

React Native Android自定义视图能够在ViewManager子类中以两种不同的方式声明事件:

  • "鼓泡"通过getExportedCustomBubblingEventTypeConstants()
  • 发生的事件
  • "直接"通过getExportedCustomDirectEventTypeConstants()
  • 发生的事件

这两种类型的事件有什么区别?

如果我尝试将事件从Android自定义视图onClick(View v)方法发送到我的视图的JS表示形式,我将使用哪些方法来声明我的自定义事件名称?

跟进:我最终using a "direct" event to send a click from my Android view back to my JS component。这非常有效,但我仍然想知道"冒泡"事件就是这样。

1 个答案:

答案 0 :(得分:0)

感谢您的回答https://stackoverflow.com/a/44207488/2881112 我能够掌握如何在 Android 中处理本机事件。

经过大量实验后,我发现了这一点。

基本上有两种类型的事件

  • 直接事件 - 这似乎只影响自定义本机组件
  • 冒泡事件 - 如果未由本机组件处理,则此事件会向上冒泡到父组件,直到处理为止。

示例:

如果我在自定义视图组件 getExportedCustomDirectEventTypeConstants 上为 onClick 事件定义 CustomView

这样就行了

 <CustomView onClick={() => console.log("Hello")}/>

但不是这个

<Pressable onPress={() => console.log("Hello")}>
   <CustomView/>
</Pressable>

但是如果我使用

getExportedCustomBubblingEventTypeConstants

然后这两个工作

 <CustomView onClick={() => console.log("Hello")}/>

<Pressable onPress={() => console.log("Hello")}>
   <CustomView/>
</Pressable>