首页 > 解决方案 > 创建一个 React-Native 桥接 iOS 类的实例

问题描述

我正在编写一个桥接和使用 Swift 类的反应本机应用程序,我有桥接工作,我可以在我创建的类上调用函数。我正在努力做到这一点,所以我必须在 react-js 中创建一个 swift 类的实例,但我不确定如何做到这一点。

这是我的代码示例:

迅捷类:

import Foundation

@objc(Torch)
class Torch: NSObject
{

  @objc static func requiresMainQueueSetup() -> Bool {return true}

  @objc var isOn = false

  @objc func turnOn() {
    isOn = true
  }
  @objc func turnOff() {
    isOn = false
  }
  @objc func getTorchStatus(_ callback: RCTResponseSenderBlock) {
      callback([NSNull(), isOn])
  }
}

目标C类:

#import <Foundation/Foundation.h>
#import "React/RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(Torch,NSObject)

    RCT_EXTERN_METHOD(requiresMainQueueSetup)
    RCT_EXTERN_METHOD(turnOn)
    RCT_EXTERN_METHOD(turnOff)
    RCT_EXTERN_METHOD(getTorchStatus: (RCTResponseSenderBlock)callback)

@end

桥接头:

#import "React/RCTBridgeModule.h"

反应原生代码:

import {NativeModules} from 'react-native';
var Torch = NativeModules.Torch;
Torch.turnOn()
Torch.getTorchStatus((error, isOn) => {
   console.log(isOn)
 });

当我运行该应用程序时,它将手电筒的值设置为 true,然后通过获取其状态来打印它的值。

如果我再这样做

import {NativeModules} from 'react-native';
var Torch = NativeModules.Torch;
Torch.turnOn()
Torch.getTorchStatus((error, isOn) => {
   console.log(isOn)
 });

var NewTorch = NativeModules.Torch;
NewTorch.getTorchStatus((error, isOn) => {
   console.log(isOn)
 });

这将打印与以前相同的值,就像 NewTorch 与 Torch 是相同的实例。我想知道如何创建一个新的 Torch 实例,以便它有自己的状态而不是共享状态。或者,如果这是可能的,我需要创建一个类来快速管理实例。

对此的任何帮助都会很棒,谢谢。

标签: swiftreactjsreact-nativewrapper

解决方案


推荐阅读