我想使用本机模块而不使用外部库来获取iOS设备名称。
根据React Native的文档,“ React Native桥是异步的,因此将结果传递给JavaScript的唯一方法是使用回调或发出事件”。但是,文档还说明,您可以将常量导出到JavaScript,而无需执行从JS到Objective-C的往返操作。
是否有一种方法可以从本地模块以设备名称/型号作为值导出常量,而不必使用回调?
答案 0 :(得分:0)
您可以创建头文件,如下所示:
// RCTDeviceInfo.h
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
@interface RCTDeviceInfo : NSObject<RCTBridgeModule>
@end
然后将其导出即可:
//RCTDeviceInfo.m
#import "RCTDataLogger.h"
@implementation RCTDeviceInfo
RCT_EXPORT_MODULE(DeviceInfo);
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getName) {
return [[UIDevice currentDevice] name];
}
@end
然后在JavaScript端同步进行以下操作:
import { NativeModules} from "react-native"
const DeviceInfo = NativeModules.DeviceInfo;
const deviceName = DeviceInfo.getName();
您可以从官方文档here
中了解更多信息