React Native 调用原生模块为什么没反应?
我在 Android 上写了个 Native Module,导出方法也加了 @ReactMethod,但在 JS 里调用完全没反应,也不报错。
试过重启 Metro、重装 App,还是不行。JS 这边是这样调的:
import { NativeModules } from 'react-native';
const { MyCustomModule } = NativeModules;
MyCustomModule.doSomething(); // 这行执行了但原生没动静
原生那边方法签名是对的,也注册到 Package 里了,是不是漏了什么关键步骤?
getName()方法,这个返回的名字要和 JS 里用的一模一样,不然根本连不上。然后在 Android 里别忘了在
MainApplication.java里把你的 module 添加到getPackages()里面去。我就犯过这错,明明写了 module 就是没反应。还有一个容易忽略的地方:如果你的方法是有返回值的,记得加上
@ReactMethod(isBlockingSynchronousMethod = true)这个参数,不然异步调用可能会有问题。最后提醒一下,有时候 gradle 缓存也会捣乱,建议 clean 下项目再试试。别走弯路了,就从这几个地方挨个排查吧,肯定能找出问题来。