React Native Android自定义视图中的“冒泡”与“直接”事件

Ric*_*ier 6 android react-native

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

  • 通过“冒泡”事件 getExportedCustomBubblingEventTypeConstants()
  • 通过“直接”事件 getExportedCustomDirectEventTypeConstants()

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

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


后续行动:我最终使用“直接”事件将来自Android视图的点击发送回我的JS组件。这很好,但是我仍然想知道“冒泡”事件的全部含义。

Atu*_*tul 1

感谢您在这里的回答/sf/answers/3094524191/ 我能够掌握处理 Android 中的本机事件。

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

基本上有两种类型的事件

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

例子:

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

然后这有效

 <CustomView onClick={() => console.log("Hello")}/>
Run Code Online (Sandbox Code Playgroud)

但不是这个

<Pressable onPress={() => console.log("Hello")}>
   <CustomView/>
</Pressable>
Run Code Online (Sandbox Code Playgroud)

但如果我用

getExportedCustomBubblingEventTypeConstants

然后这两个都起作用

 <CustomView onClick={() => console.log("Hello")}/>
Run Code Online (Sandbox Code Playgroud)

<Pressable onPress={() => console.log("Hello")}>
   <CustomView/>
</Pressable>
Run Code Online (Sandbox Code Playgroud)