美文网首页
React Native Android中touch事件传递

React Native Android中touch事件传递

作者: xinguoshui | 来源:发表于2018-08-10 10:06 被阅读0次

    在Android中

    ReactRootView.onTouchEvent()
    JSTouchDispatcher.handleTouchEvent()
    EventDispatcher.dispatchEvent()
    mCurrentFrameCallback.maybePostFromNonUI()
    DispatchEventsRunnable.run()
    event.dispatch(mRCTEventEmitter)
    
    mRCTEventEmitter = mReactContext.getJSModule(RCTEventEmitter.class);
    

    这个是一个JS module。
    在RN中

    react-native/Libraries/Renderer/oss/ReactNativeRenderer-prod.js
    RCTEventEmitter.register(ReactNativeEventEmitter);
    

    其中react-native/Libraries/EventEmitter /RCTEventEmitter.js会进行如下操作:

    const RCTEventEmitter = {
      register(eventEmitter: any) {
        BatchedBridge.registerCallableModule(
          'RCTEventEmitter',
          eventEmitter
        );
      }
    };
    

    所以最终事件处理逻辑是在ReactNativeRenderer-prod.js这个文件中的receiveTouches函数。

    receiveTouches
    _receiveRootNodeIDEvent
    handleTopLevel
    extractEvents
    

    这里有一篇文章讲到了RN iOS中touch事件的传递。
    react native事件及手势响应系统

    相关文章

      网友评论

          本文标题:React Native Android中touch事件传递

          本文链接:https://www.haomeiwen.com/subject/odqkbftx.html