React Native 调用原生模块为什么一直返回 undefined?
我按照官方文档写了 Android 的 Native Module,但在 JS 里调用方法总是返回 undefined,明明原生那边 Log 都打出来了啊。
我在 JS 里是这样调的:
import { NativeModules } from 'react-native';
const { MyCustomModule } = NativeModules;
MyCustomModule.doSomething((result) => {
console.log(result); // 这里一直是 undefined
});
原生 Java 方法用了 @ReactMethod 注解,也加了 Promise 和 Callback 的处理,但就是拿不到返回值,是不是导出方式有问题?
@ReactMethod注解,这一步是对的。但是,返回值为undefined可能是因为回调函数或者 Promise 的处理出了问题。先检查一下你的 Java 方法签名。如果你打算使用回调函数,确保回调参数正确传递。如果是用 Promise,记得 resolve 或 reject 后面的逻辑。
假设你使用的是回调,确保你的方法签名类似这样:
如果是用 Promise,那么应该是这样的:
另外,检查一下你的
build.gradle文件和MainApplication.java中是否正确注册了这个模块。有时候模块没注册好也会导致找不到方法。最后,确保你的 React Native 版本和原生模块的版本兼容,有时候版本不一致也会有奇怪的问题。
希望这些信息能帮到你,排查起来可能有点繁琐,但一步步来总能找到原因的。