如何从反应原生桥将参数传递给swift类

Posted

技术标签:

【中文标题】如何从反应原生桥将参数传递给swift类【英文标题】:How to pass parameter to swift class from react native bridge 【发布时间】:2020-04-06 16:22:42 【问题描述】:

我有一个反应原生应用程序,我从这个应用程序调用一个 swift 类。我为此使用了一座桥 我想将一个参数传递给我的 Counter 类的 init。我怎样才能做到这一点?我对 swift 和反应非常陌生。

@interface RCT_EXTERN_MODULE(Counter, NSObject)

swift 版本是 5.0 反应原生版本是 0.62.1

【问题讨论】:

请分享更多代码。 【参考方案1】:

您不能从 js 传递参数来实例化您的本机模块,因为 RN 使用默认初始化程序 init 为每个桥创建单例实例。但是您可以使用函数设置所需的属性,例如

MyModuleExport.m:

@interface RCT_EXTERN_MODULE(MyModule, NSObject)

RCT_EXTERN_METHOD(construct:(NSString*)name value:(NSInteger)value)

@end

MyModule.swift:

@objc(MyModule)    
class MyModule: NSObject 
    var name: String!
    var value: Int!

    @objc
    func construct(_ name: String, value: Int) 
        self.name = name
        self.value = value
    

JS:

const module = NativeModules.MyModule
module.construct("Hello", 100);

【讨论】:

以上是关于如何从反应原生桥将参数传递给swift类的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应测试库中将参数传递给 getByText?

如何将额外的参数传递给自定义UIView类以便在swift中进行初始化

如何将参数传递给快速完成的函数

如何将 argparse 参数传递给类

如何将子类作为期望基类的函数的参数传递,然后将该对象传递给指向这些抽象类对象的指针向量?

如何将额外的参数传递给 Vision 框架?