是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 继承任何属性。
我有几个看法。一个是 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 继承任何属性。