React Native中TurboModules怎么调用原生方法?
我按照文档配置了TurboModule,但在JS里调用时一直报undefined is not a function,是不是哪里注册错了?
我的模块叫MyLogger,在jsi::HostObject里实现了logMessage方法,也加了REACT_MODULE宏,但JS端就是找不到。
import { MyLogger } from './NativeModules';
// 或者用 requireNativeModule?
const logger = requireNativeModule('MyLogger');
logger.logMessage('test'); // 这里崩溃
首先,确保你的TurboModule在C++端实现的时候,
REACT_METHOD宏别写错了,方法签名也要对,比如:注意这里的
Java_com_yourcompany_yourapp_YourApplication_nativeInstallMyLogger方法要对应你的Android项目中的Application类。然后在你的MainActivity或者Application类中调用这个方法安装模块:
最后,JS端导入的方式要注意,你上面两种方式都可以,但要确保模块名一致。你这样写应该没问题:
或者用require也是可以的:
关键是确保Native模块已经正确加载并且方法签名匹配。希望这些能帮到你,踩过这个坑感觉整个人都不好了。