我已成功为原始类型(如float和BOOL)创建了RCT_EXPORT_VIEW_PROPERTY,但无法使我的自定义结构生效,我一直从JavaScript获取(null)。
我在AIRMapMarkerManager.m中定义了我的RCT_EXPORT_VIEW_PROPERTY
textField.tintColor = [UIColor clearColor];
在RCTConvert + MoreMapKit.m中,我创建了自定义转换器
#import "RCTConvert+MoreMapKit.h"
RCT_EXPORT_VIEW_PROPERTY(importantStatus, ImportantStatus)
RCTConvert + MoreMapKit.h
+ (ImportantStatus)ImportantStatus:(id)json
{
json = [self NSDictionary:json];
NSLog(@"json @%", json); // returns (null)
return (ImportantStatus){
[self BOOL:json[@"isImportant"]],
[self float:json[@"unimportantOpacity"]]
};
}
AirMapMarker.h
+ (ImportantStatus)ImportantStatus:(id)json;
MapMarker.js
struct ImportantStatus {
BOOL isImportant;
float unimportantOpacity;
};
typedef struct ImportantStatus ImportantStatus;
@property (nonatomic, assign) ImportantStatus importantStatus;
我的JS代码发送数据
importantStatus: PropTypes.shape({
isImportant: PropTypes.bool,
unimportantOpacity: PropTypes.number,
}),
当我刚刚发送它们作为上面注释掉的简单道具时,我在RCTConvert + MoreMapKit.m中没有使用任何自定义转换器函数的情况下工作,所以我猜测我做错了什么。