gpt4 book ai didi

objective-c - 如何将数据从 native react 传递到 native iOS View ?

转载 作者:行者123 更新时间:2023-12-05 05:19:33 26 4
gpt4 key购买 nike

我已经在线阅读了 react-native 文档,但我仍然难以理解。我怎样才能用我在 JS 端获取的一些数据来实例化一个原生 View ?基本上我想通过桥传递一些 JSON,将 JSON 转换成 NSDictionary,然后用那个 NSDictionary 实例化一个 View 。我已经能够成功创建 native View ,但我正在努力解决如何将任何数据传递给它的问题。我需要看看 RCT_EXPORT_VIEW_PROPERTY 吗? ?或者 RCT_EXPORT_CUSTOM_VIEW_PROPERTY

在 JS 方面,我已经让我的原生组件可以像这样使用:

import { requireNativeComponent } from 'react-native';
module.exports = requireNativeComponent('MyNativeView', null);

然后,在我的 app.js 文件中,我只需导入 View :

import MyNativeView from './MyNativeView'; 

然后像这样渲染它:

render() {
return (
<MyNativeView />
);
}

这一切都很棒。桥工作正常,为了简洁起见,我将代码省略了。我需要做的是将一些数据传递给“MyNativeView”。有点像

`<MyNativeView data={this.JSONData} />`

我该怎么做?

最佳答案

我知道已经有一段时间了,但我相信这就是 future 互联网潜伏者的答案。

一旦您在 Javascript 中声明了“数据” Prop ,您需要在 Objective-C/Swift 领域做两件事。

首先是在导出 native iOS View 的 .m 类中,您需要这样的东西:

RCT_EXPORT_VIEW_PROPERTY(data, NSDictionary *)

这将自动调用“setYourCustomerPropertyName”的设置函数,无论您在 View 管理器类中返回什么 View 。但是,如果您不使用此 setter 函数创建 native iOS View ,而是在 javascript 领域传递一个 prop,您将得到经典的“未知实例发送到选择器崩溃”。

要避免这种情况并真正访问您的数据,您所要做的就是在 View 上设置该 setter ,然后您就可以无崩溃地访问该数据。

在 swift

class MyCustomView: UIView {
func setData(data: Dictionary<String,Any>) {
// Access your data here
}
}

在 Objective-C 中

#import "MyCustomView.h"

@implementation MyCustomView

-(void)setData:(NSDictionary *)data {
// set data here
}

@end

然后一起

@interface MyNativeViewManager()

@end

@implementation MyNativeViewManager

RCT_EXPORT_MODULE(MyNativeView)
RCT_EXPORT_VIEW_PROPERTY(data, NSDictionary *)

- (UIView *)view {
return [MyCustomView new];
}

关于objective-c - 如何将数据从 native react 传递到 native iOS View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com