2017-03-11 57 views
2

我有一個自定義組件,如下所示。有趣的是,ref未被設置,並且onLayout未被解僱。如果我將MyView換成Parent類中的另一個View,則這些問題會得到解決。ReactNative:自定義組件上的ref和onLayout

無論是裁判還是onLayout工作

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

參考這裏工作

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

使用範例

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

你確定這是工作時,你把它包在另一個視圖?我不使用這樣的ref,但是使用了特定的名字,但是如果可能的話,你不應該使用它。你究竟想要完成什麼? – sfratini

+0

我已經更新了更多的細節問題。 –

回答

2

ref只適用於組件,這就是爲什麼它不能在第一種情況下工作。

onLayoutView的方法,並且不會被每個Component繼承。傳入prop並將其設置爲包含View即可解決該問題。