我在Android中具有以下反应本机组件。
父类包含一些常见的设置,和一些模板代码(例如setData)。
Android版本
父部件
public abstract class ParentComponent<T extends Chart, U extends Entry> extends SimpleViewManager {
@ReactProp(name = "commonSettings")
public void setCommonSettings(T chart, ReadableMap propMap) {
// do common settings
}
abstract U createEntry(ReadableMap value);
@ReactProp(name = "data")
public void setData(Chart chart, ReadableArray values) {
for (int i = 0; i < values(); i++) {
chart.addEntry(values.getMap(i));
}
}
}
儿童组件
public class FooComponent extends ParentComponent<FooChart, FooEntry> {
@Override
public String getName() {
return "FooChart";
}
@Override
protected View createViewInstance(ThemedReactContext reactContext) {
return new FooChart(reactContext);
}
@ReactProp(name = "fooSettings")
public void setFooSettings(FooChart chart, ReadableMap propMap) {
// do foo settings
}
@Override
FooEntry createEntry(ReadableMap value) {
return xxxxx;
}
}
儿童组件B
public class BarComponent extends ParentComponent<BarChart, BarEntry> {
@Override
public String getName() {
return "BarChart";
}
@Override
protected View createViewInstance(ThemedReactContext reactContext) {
return new BarChart(reactContext);
}
@ReactProp(name = "barSettings")
public void setBarSettings(FooChart chart, ReadableMap propMap) {
// do foo settings
}
@Override
BarEntry createEntry(ReadableMap value) {
return xxxxx;
}
}
但是我应该如何在iOS中实现这些?
我是OC&amp;迅速发展,这是我的疑问。
在iOS中,需要一个返回uiview实例的rctViewManager。
uiview实例是什么?
我不想继承foochart&amp;Barchart,委托是我需要的。
因此如何共享常见的设置和模板代码?扩展?
我是否必须在foochartviewmanager和barchartviewmanager中重复
RCT_EXPORT_VIEW_PROPERTY(commonSettings, NSDictionary)
?
我尝试定义class ParentComponentManagerSwift: RCTViewManager
,
并在那里声明RCT_EXPORT_VIEW_PROPERTY(commonSettings, NSDictionary)
,
和class FooComponentManagerSwift: ParentComponentManager
,但它不起作用。
但是我们的组件确实继承了一堆出口,例如背景彩色/宽度/高度,在rctviewmanager中声明?
1)如果foochart&amp;Barchart是Uiview的子类,然后您可以初始化Foochart&amp;Barchart,设置委托并直接退还
- (UIView *)view {
FooChart *chart = [FooChart new];
chart.delegate = self;
return chart;
}
2)您可以使用继承共享常见的设置和模板代码
3)您可以复制出口或创建一些可以结合通用出口的宏。
组件实际上不继承出口。所有组件均具有RCTViewManager出口 自己的出口,但它在不使用继承的情况下完成了。