如何在Android平台上的react-native中调用javascript方法?

fis*_*ish 5 android react-native

当我单击本机UI中的按钮(可能来自片段容器)时,我想从JavaScript调用一个方法,让我们像'jsMethod'或其他一样调用它.但是,我以前从未处理过这种情况.

我正在查找网站上Facebook文档的一些相关代码,到目前为止找不到问题的关键.有人给我一些建议吗?

Pet*_*erg 7

要从Java调用JavaScript方法,请执行以下操作:

ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();

CatalystInstance catalystInstance = reactContext.getCatalystInstance();
WritableNativeArray params = new WritableNativeArray();
params.pushString("Message to show using nameOfJsMethod");
catalystInstance.callFunction("JavaScriptVisibleToJava", "nameOfJsMethod", params);
Run Code Online (Sandbox Code Playgroud)

必须定义要调用的JavaScript方法并使其对Java可见:

import BatchedBridge from "react-native/Libraries/BatchedBridge/BatchedBridge";

export class ExposedToJava {
  nameOfJsMethod(message) {
    alert(message);
  }
}

const exposedToJava = new ExposedToJava();
BatchedBridge.registerCallableModule("JavaScriptVisibleToJava", exposedToJava);
Run Code Online (Sandbox Code Playgroud)

Github上的这个示例包括一个工作演示.

编辑我被告知这种方法没有正式记录.如果您的方案允许,请考虑采用@ufxmeng的建议(在对OP的评论中).