Нет, свойства не могут быть унаследованы без модификации исходного кода React-Native. React-Native ищет только методы, реализованные конкретным классом, без методов, реализуемых его суперклассами.
Вы можете определить макрос в суперкласса и использовать этот макрос внутри подклассов:
#define EXPORT_COMMON_PROPERTIES \
RCT_EXPORT_VIEW_PROPERTY(propertyDefinedInParent, NSString) \
RCT_EXPORT_VIEW_PROPERTY(anotherPropertyDefinedInParent, NSString)
А потом в .m файл детей просто использовать
EXPORT_COMMON_PROPERTIES;
UPDATE: Мы на самом деле не наследуя любой свойства от 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.
Это хороший способ. Но мы наследуем много RCT_EXPORT_VIEW_PROPERTY от RCTViewManager. как RCT_EXPORT_SHADOW_PROPERTY (ширина, поплавок) RCT_EXPORT_SHADOW_PROPERTY (высота, поплавок) Как реагировать родной сделал это? –