React Native原生模块调用后没反应是怎么回事?

开发者瑞芳 阅读 4

我按照官方文档写了个原生模块,Android端的Toast方法能调用,但iOS这边完全没反应,控制台也不报错,是不是Bridge通信哪里漏了?

我在JS里是这样调用的:

import { NativeModules } from 'react-native';
const { MyNativeModule } = NativeModules;

// 调用原生方法
MyNativeModule.showAlert('Hello from JS');

原生模块在iOS的MyNativeModule.m里也实现了RCT_EXPORT_METHOD(showAlert:(NSString *)message),但就是不弹窗,连NSLog都没输出。之前试过重启Metro和重新build,还是不行,到底卡在哪了?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
Dev · 兰兰
你这个问题大概率是模块导出方式不对。iOS端现在得用RCT_EXTERN_MODULE和RCT_EXTERN_METHOD这俩宏来导出,单纯的RCT_EXPORT_METHOD在iOS上已经不够了。

改成这样:

MyNativeModule.h:
#import 

@interface MyNativeModule : NSObject
@end


MyNativeModule.m:
#import "MyNativeModule.h"
#import

RCT_EXTERN_MODULE(MyNativeModule, NSObject)

RCT_EXTERN_METHOD(showAlert:(NSString *)message)

- (void)showAlert:(NSString *)message {
// 你的实现
NSLog(@"showAlert called: %@", message);
}


如果用的是新版RN(0.60+),检查下Podfile里use_native_modules!有没有跑起来,还有 pod install 之后模块有没有注册上。
点赞
2026-03-13 17:09