2017-03-11 21 views
2

私はカスタムコンポーネントを以下のように持っています。興味深いことに、refはセットアップされておらず、onLayoutは起動されていません。 Parentクラスの別のViewの中にMyViewを入れれば、これらの問題は解決されます。ReactNative:カスタムコンポーネントのrefとonLayout

REFもREFは使用例

class Parent extends Component { 
    render() { 
    return (
     <MyView ref={c => this.myView = c} onLayout={e => console.log(e)} /> 
    ) 
    } 
} 
+0

これは別のビューにラップするときに有効ですか?私はそのようなrefを使用するのではなく、特定の名前を使用しますが、可能であればそれを使用すべきではありません。あなたは正確に何を達成しようとしていますか? – sfratini

+0

質問を詳細に更新しました。 –

答えて

2

ここ

class MyView extends Component { 
    render() { 
    return (
     <View style={{flex: 1}}> 
     {this.props.children} 
     </View> 
    ) 
    } 
} 

を作品

const MyView = props => 
     <View style={{flex: 1}}> 
     {this.props.children} 
     </View> 

仕事onLayoutどちらもrefは、最初のシナリオでは機能しない理由であるコンポーネントに対してのみ機能します。

onLayoutは、Viewの方法であり、Componentごとに継承されません。 propを渡して、それを含むものをViewに設定すると、問題が解決されます。