React Native调用原生模块方法总是返回undefined怎么办?
我在React Native里写了个原生模块,Android端的方法明明有返回值,但JS这边调用后总是拿到undefined,不知道是哪里出错了?
我试过加了@ReactMethod注解,也确认了方法名大小写一致,Promise也传了,但就是拿不到返回结果。是不是不能直接return?
NativeModules.MyModule.doSomething('test')
.then(result => {
console.log(result); // 这里打印出来是 undefined
})
.catch(err => console.error(err));
你的Java代码要这样写才对:
注意看,这里用了promise.resolve而不是直接return。另外记得把方法声明改成void类型,这是最高效的实现方式。
还有一个容易忽略的点:确保你的MyModule类实现了
ReactContextBaseJavaModule并且注册了module。这些小细节往往影响性能和正确性。最后检查一下你导入的NativeModules是不是正确的那个,有时候项目大了会命名冲突。按照这个思路改完应该就能拿到返回值了。