ReactNative进阶:React Native与原生通信
在React Native中,与原生模块通信主要通过NativeModules
对象。以下是一个如何使用原生模块的例子:
首先,确保你的原生模块已经正确导出并注册到了JavaScript环境中。在iOS中,你可以这样导出模块:
// RCTMyNativeModule.h
#import <React/RCTBridgeModule.h>
@interface RCTMyNativeModule : NSObject <RCTBridgeModule>
@end
// RCTMyNativeModule.m
#import "RCTMyNativeModule.h"
@implementation RCTMyNativeModule
RCT_EXPORT_MODULE();
// 导出方法供JavaScript调用
RCT_EXPORT_METHOD(doSomething:(NSString *)stringParam callback:(RCTResponseSenderBlock)callback) {
// 实现模块功能
// ...
// 调用回调返回结果
callback(@[@"result"]);
}
@end
在JavaScript中,你可以这样使用这个模块:
import { NativeModules } from 'react-native';
const MyNativeModule = NativeModules.MyNativeModule;
// 调用原生模块的方法
MyNativeModule.doSomething('Some parameter', (result) => {
console.log(result); // 输出: 'result'
});
确保你的原生模块名称与JavaScript中引用的名称相匹配。在iOS中,默认情况下模块类名就是模块名,但你可以通过RCT_EXPORT_MODULE(MyCustomModuleName)
来指定自定义模块名。在Android中,你需要在getPackages()
方法中返回一个新的ReactPackage
实例,并实现createNativeModules
和createViewManagers
方法来导出模块。
评论已关闭