如何在反应iOS中委派第三方组件



我在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出口 自己的出口,但它在不使用继承的情况下完成了。

相关内容

  • 没有找到相关文章

最新更新