2017-02-27 6 views
0

私は迅速かつ反応的なネイティブに新しいです。ネイティブコンポーネントの属性を再マッピングする正しい方法は何ですか

UIViewのサブクラスであるNativeCompというサードパーティのネイティブコンポーネントがあります。

と私が反応し、ネイティブコンポーネントとして、それをラップし、jsのは、ネイティブの属性に属性を再マップしたい(いくつかの名前変更作業)例えば

JS

<RNComponent config={enable:true, size:5}/> 

は、ネイティブコードにつながります。

component.enable=true 
component.size=5 
  • アプローチ1

    RNComponentはNativeCompを拡張し、新しいsetConfig、この機能でconfigue自己を追加します。

    これは動作しますが、少し奇妙です。

  • アプローチ2 スタンドアロンのUIViewクラスContainerViewを作成し、NativeCompをサブビューとして追加します。

    override init(frame: CoreGraphics.CGRect) { 
    
        self._component = NativeComp(frame: frame); 
    
        super.init(frame: frame); 
    
        self.addSubview(_component); 
    
    } 
    
    override func reactSetFrame(_ frame: CGRect) 
    { 
        _component.reactSetFrame(frame); 
    } 
    

    それはアプローチ1よりもはるかにきれいに見えますが、_componentはContainerViewの境界線の外にあるので、タッチイベントが欠落しています。

    私はself.reactSetFrame(frame);

    override func reactSetFrame(_ frame: CGRect) 
    { 
        self.reactSetFrame(frame); 
        _component.reactSetFrame(frame); 
    } 
    

ように、プログラムがクラッシュexec bad accessをそれを書く場合、私はかなり理由を理解していません。

js属性を既存のネイティブコンポーネントに再マップする正しい方法は何ですか?

答えて

0

私の間違い。

self.reactSetFrame(frame)は無限再帰的に発生します。

super.reactSetFrameに変更すると、すべて正常に動作します。

関連する問題