相关疑难解决方法(0)

React Native Android原生UI组件中的自定义事件

我想在Android上的React Native应用程序中使用OpenStreetMap磁贴,所以我正在尝试包装OSMDroid本机UI组件,如此处所述.在大多数情况下它的正常工作,但我无法搞清楚如何正确地处理事件,尤其是onScrollonZoom.

使用OSMDroid,您可以设置DelayedMapListener来处理事件,这非常简单.我已经确认事件正在Java端正确处理,直到触发JS代码为止.但是,他们没有触发我的JavaScript代码.

根据文档,我在createViewInstance我的视图管理器的方法中用Java实现了事件处理程序:

map.setMapListener(new DelayedMapListener(new MapListener() {
    public boolean onScroll(ScrollEvent event) {
        WritableMap eventData = Arguments.createMap();

        // Fill in eventData; details not important

        ReactContext reactContext = (ReactContext)map.getContext();
        reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(
            map.getId(),
            "topChange",
             eventData);

        return true;
    }

    public boolean onZoom(ZoomEvent event) {
        // Basically the same as above
    }
}, 100));
Run Code Online (Sandbox Code Playgroud)

我的JS代码的相关部分基本上与上面链接的文档中的代码相同:

class OSMDroidMapView extends Component {
    constructor(props) {
        super(props);
        this._onChange = this._onChange.bind(this);
    }

    _onChange(event: Event) {
        console.log(event);
        // Handle event data …
Run Code Online (Sandbox Code Playgroud)

javascript java android react-native

16
推荐指数
1
解决办法
3552
查看次数

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

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

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

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

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


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

android react-native

6
推荐指数
1
解决办法
750
查看次数

标签 统计

android ×2

react-native ×2

java ×1

javascript ×1