Emit event из android native не работает React Native - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь передать событие из android native для передачи данных в RN.

Внутри onCreate () MainApplication. java Я генерирую событие, как показано ниже:

public class MainApplication extends NavigationApplication implements ReactApplication {
  /// other codes

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    initializeFlipper(this, getReactNativeHost().getReactInstanceManager());

    WritableMap params = Arguments.createMap();
    params.putString("key", "value");

    ReactInstanceManager mReactInstanceManager = getReactNativeHost().getReactInstanceManager();
    ReactApplicationContext context = (ReactApplicationContext) mReactInstanceManager.getCurrentReactContext();
    mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
        public void onReactContextInitialized(ReactContext reactContext) {
            reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("MyEvent", params);
        }
    });
  }
}

Мой компонент RN

const App = () => {
  useEffect(() => {
    const eventListener = DeviceEventEmitter.addListener('MyEvent', function (e,) {
      console.log('test event', e);
    });

    return () => {
      eventListener.remove();
    };
  }, []);

  return (
    <View>
    ///
    </View>
  )
}

Я не получаю никаких ошибок в Logcat от AndroidStudio и отладчика RN. Может кто-нибудь сказать мне, почему MyEvent никогда не увольняют?

...