是RCT_EXPORT_VIEW_PROPERTY可以继承

is RCT_EXPORT_VIEW_PROPERTY can be inherited

我有几个看法。一个是 parent,其他是 children。

parent 有一个字段,例如: 姓名

我有 RCT_EXPORT_VIEW_PROPERTY(name, NSString); 在 parent.m 中,但它不起作用。

我要复制 RCT_EXPORT_VIEW_PROPERTY(name, NSString); 所有 children .

如何继承RCT_EXPORT_VIEW_PROPERTY .

不,如果不修改 React-Native 的源代码,则无法继承属性。 React-Native 只查找由具体 class 实现的方法,而没有由它的 superclasses 实现的方法。

您可以在 superclass 中定义宏并在 subclasses 中使用此宏:

#define EXPORT_COMMON_PROPERTIES \
RCT_EXPORT_VIEW_PROPERTY(propertyDefinedInParent, NSString) \
RCT_EXPORT_VIEW_PROPERTY(anotherPropertyDefinedInParent, NSString)

然后在 children 的 .m 文件中使用

EXPORT_COMMON_PROPERTIES;

更新: 我们实际上并没有从 RCTViewManager 继承任何属性。 React-native 将 ViewManagers 中的所有原生道具作为常量导出到 js 级别。然后它只是将 RCTViewManager 的道具与我们的组件道具连接起来:

 // The ViewConfig doesn't contain any props inherited from the view manager's
  // superclass, so we manually merge in the RCTView ones. Other inheritance
  // patterns are currenty not supported.
  const nativeProps = {
    ...UIManager.RCTView.NativeProps,
    ...viewConfig.NativeProps,
  };

- requireNativeComponent 函数的源代码。 但是在本机级别,我们没有从 RCTViewManager 继承任何属性。