React Native:通过本机模块获取设备名称而无需回调

时间:2019-07-05 15:08:14

标签: ios react-native

我想使用本机模块而不使用外部库来获取iOS设备名称。

根据React Native的文档,“ React Native桥是异步的,因此将结果传递给JavaScript的唯一方法是使用回调或发出事件”。但是,文档还说明,您可以将常量导出到JavaScript,而无需执行从JS到Objective-C的往返操作。

是否有一种方法可以从本地模块以设备名称/型号作为值导出常量,而不必使用回调?

1 个答案:

答案 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

中了解更多信息