我为Android(使用Kotlin语言)创建了一个本机模块
exports.handler = async (event, context) => {
event.Records.forEach(record => {
const { body } = record; // the messages from the bus
promises.push(PromiseCreator(body));
});
try {
await Promise.all(promises);
} catch(err) {
return err;
}
};
然后我按照https://facebook.github.io/react-native/docs/native-modules-android.html
的说明将该模块注册到ModulesPackages中,并将其添加到MainApplication.tk中。在App.js中
class TestModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
override fun getName(): String {
return "TestModule"
}
@ReactMethod
fun testing(): String{
return "my modules"
}
}
运行此命令后,我希望收到带有“我的模块”文本的警报,但收到带有“未定义”文本的警报
我不知道我做错了什么。当我运行react-native run-android时,我没有看到任何错误或抱怨。
有什么建议我做错了吗?
答案 0 :(得分:0)
要在本机模块和js模块之间进行通信,您应该调用回调,promise或use事件。就您而言,testing
函数可以像
import com.facebook.react.bridge.Callback;
...
@ReactMethod
fun testing(callback: Callback): Void{
callback.invoke("my modules")
}
修改
在这种情况下,您应该在js文件中传递回调:
testCallback = (name) => {
console.log(name);
}
componentDidMount() {
TestingModule.testing(this.testCallback);
}