2017-02-23 7 views
0

私はいくつかのビューを持っています。 1つは親、もう1つは子です。は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はViewManagerからのすべてのネイティブ・プロップを定数としてjsレベルにエクスポートします。 - requireNativeComponent機能のソースコード

// 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, 
    }; 

:そして、それは私たちのコンポーネント小道具とRCTViewManagerの小道具を連結します。 しかし、ネイティブレベルでは、RCTViewManagerからプロパティを継承しません。

+1

これは良い方法です。 しかし、私たちはRCTViewManagerから多くのRCT_EXPORT_VIEW_PROPERTYを継承しています。以下のような RCT_EXPORT_SHADOW_PROPERTY(幅、フロート) RCT_EXPORT_SHADOW_PROPERTY(高さ、フロート) ネイティブがそれを作っ反応しましたか? –

関連する問題