如何理解React Native中"向Javascript发送事件"中的"ReactContext"

Mar*_* Ma 7 android react-native

我想使用方法sendEvent(),但是如何获取ReactContext reactContext?

private void sendEvent(ReactContext reactContext,
                   String eventName,
                   @Nullable WritableMap params) {reactContext
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
  .emit(eventName, params);}
Run Code Online (Sandbox Code Playgroud)

小智 -1

ReactInstanceManager我通过保存对类的静态引用MainActivity并添加一个public static getContext()方法来暂时解决了这个问题。感觉不对,但似乎有效。

public final class MainActivity extends ReactActivity {

    private static ReactInstanceManager sReactInstanceManager = null;

    /* [...] */

    @Override
    protected ReactInstanceManager createReactInstanceManager() {
        ReactInstanceManager manager = super.createReactInstanceManager();
        sReactInstanceManager = manager;
        return manager;
    }

    public static ReactContext getContext() {
        if (sReactInstanceManager == null){
            // This doesn't seem to happen ...
            throw new IllegalStateException("Instance manager not available");
        }
        final ReactContext context = sReactInstanceManager.getCurrentReactContext();
        if (context == null){
            // This really shouldn't happen ...
            throw new IllegalStateException("React context not available");
        }
        return context;
    }

    /* [...] */
}
Run Code Online (Sandbox Code Playgroud)

createReactInstanceManager()ReactActivity是由的方法调用的onCreate(),所以我认为可以安全地假设 它将sReactInstanceManager指向正确的实例,但不要相信我的话。