不,如果沒有源代碼修改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繼承任何屬性。
這是一個好方法。 但是我們從RCTViewManager繼承了很多RCT_EXPORT_VIEW_PROPERTY。像 RCT_EXPORT_SHADOW_PROPERTY(寬度,浮動) RCT_EXPORT_SHADOW_PROPERTY(高度,浮點數) 怎麼反應本土製造的? –