2017-02-23 74 views
0

我有幾個視圖。一個是父母,另外一個是孩子。是RCT_EXPORT_VIEW_PROPERTY可以繼承

父母有一個字段如: 名

我在parent.m RCT_EXPORT_VIEW_PROPERTY(name, NSString);,但它不工作。

我必須複製 RCT_EXPORT_VIEW_PROPERTY(name, NSString); 給所有的孩子。

如何繼承RCT_EXPORT_VIEW_PROPERTY。

回答

1

不,如果沒有源代碼修改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繼承任何屬性。

+1

這是一個好方法。 但是我們從RCTViewManager繼承了很多RCT_EXPORT_VIEW_PROPERTY。像 RCT_EXPORT_SHADOW_PROPERTY(寬度,浮動) RCT_EXPORT_SHADOW_PROPERTY(高度,浮點數) 怎麼反應本土製造的? –