React Native调用原生模块方法总是返回undefined怎么办?

尚斌的笔记 阅读 11

我在React Native里写了个原生模块,Android端的方法明明有返回值,但JS这边调用后总是拿到undefined,不知道是哪里出错了?

我试过加了@ReactMethod注解,也确认了方法名大小写一致,Promise也传了,但就是拿不到返回结果。是不是不能直接return?

NativeModules.MyModule.doSomething('test')
  .then(result => {
    console.log(result); // 这里打印出来是 undefined
  })
  .catch(err => console.error(err));
我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
Designer°永景
在React Native里调用原生模块方法时拿不到返回值,最常见的原因就是没正确处理Promise。别直接return值,要用Promise的resolve来传递结果。

你的Java代码要这样写才对:

@ReactMethod
public void doSomething(String param, Promise promise) {
try {
// 你的业务逻辑
String result = "something";
promise.resolve(result);
} catch (Exception e) {
promise.reject("ERROR_CODE", e);
}
}


注意看,这里用了promise.resolve而不是直接return。另外记得把方法声明改成void类型,这是最高效的实现方式。

还有一个容易忽略的点:确保你的MyModule类实现了ReactContextBaseJavaModule并且注册了module。这些小细节往往影响性能和正确性。

最后检查一下你导入的NativeModules是不是正确的那个,有时候项目大了会命名冲突。按照这个思路改完应该就能拿到返回值了。
点赞
2026-03-27 15:00