【问题标题】:React Native: Get device name through Native Modules without callbackReact Native:通过 Native Modules 获取设备名称,无需回调
【发布时间】:2019-07-05 15:08:14
【问题描述】:

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

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

有没有一种方法可以从本机模块中导出一个常量,并将设备名称/型号作为一个值而无需使用回调?

【问题讨论】:

    标签: ios react-native


    【解决方案1】:

    你可以创建如下所示的头文件:

    // 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阅读更多内容

    【讨论】:

    • 谢谢。实施此操作后,我无法构建。我得到'RCTDataLogger.h' file not found
    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多