这篇接着上一篇: [复习] android 原生模块(不带任何参数)
我发现中文官网教程不如英文官网,虽然我看不懂英语,但是使用谷歌翻译再加上自己的理解,还是不成问题的。
最主要看下面这个图:
JavaScript类型所对应的Java类型
先看基础类型:
@ReactMethod
fun testBaseType(str: String, num: Double) {
Log.e(TAG, "$str,$num")
}
这里我使用 String
和 Double
,接下来看看 javascript
怎么调用:
NativeModules?.TestModule?.testBaseType('吴敬', 27);
现在再看引用类型怎么弄。
@ReactMethod
fun testQuote(obj: ReadableMap, arr: ReadableArray) {
Log.e(TAG, "${obj.getString("name")}, ${obj.getDouble("age")}")
arr.toArrayList().forEach { Log.e(TAG, "${it},") }
}
对于 getString
就是获取字符串; getDouble
是获取 javascript
中的 number
。 在 javascript
中的调用:
NativeModules?.TestModule?.testQuote?.({name: '吴敬悦', age: 27}, [
1,
2,
3,
4,
5,
6,
]);
现在再来看回调:
@ReactMethod
fun testCallback(cal: Callback) {
cal.invoke("吴敬")
}
注意 Callback
是 com.facebook.react.bridge.
包下面;下面看 js
的调用:
NativeModules?.TestModule?.testCallback?.(name => {
console.log(name, '------');
});
网友评论