我已经在线阅读了本地文档,但我仍然在努力理解。如何使用我在JS方面提取的一些数据来实例化本机视图?基本上我想在桥上传递一些 JSON ,将 JSON 转换为 NSDictionary ,然后用 NSDictionary实例化一个视图即可。我已经能够成功创建原生视图,但我正在努力解决如何将任何数据传递给它的问题。我需要查看RCT_EXPORT_VIEW_PROPERTY
吗?还是RCT_EXPORT_CUSTOM_VIEW_PROPERTY
?
在JS方面,我已经准备好使用我的原生组件:
import { requireNativeComponent } from 'react-native';
module.exports = requireNativeComponent('MyNativeView', null);
然后,在我的app.js文件中,我只是导入视图:
import MyNativeView from './MyNativeView';
并像这样呈现:
render() {
return (
<MyNativeView />
);
}
这一切都很有效。这座桥工作得很好,为了简洁,我把这些代码留了下来。我需要做的是将一些数据传递给MyNativeView&#39;。像
这样的东西`<MyNativeView data={this.JSONData} />`
我该怎么做?
答案 0 :(得分:0)
我知道这已经有一段时间了,但我相信这是未来互联网潜伏者的答案。
一旦你在 Javascript 中声明了“数据”属性,你需要在 Objective-C / Swift 领域做两件事。
第一件事是在您导出原生 iOS 视图的 .m 类中,您需要这样的东西:
RCT_EXPORT_VIEW_PROPERTY(data, NSDictionary *)
然后,这将在您在视图管理器类中返回的任何视图上自动调用“setYourCustomerPropertyName”的 setter 函数。但是,如果您不使用此 setter 函数创建本机 iOS 视图,并且您在 javascript land 中传递一个 prop,您将得到经典的“未知实例发送到选择器崩溃”。
为了避免这种情况并真正访问您的数据,您所要做的就是在视图中设置该 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];
}