0
React Nativeのrefsに問題があります。これは私のコードの簡易版である:私は私が期待通りにログを参照してください、そしてMyActionButton押すとReactコンポーネントを再レンダリングするときにネイティブrefが未定義です
class Main extends React.Component {
constructor(props) {
...
this.refs = {};
}
render() {
if(this.state.page=="index") {
return(
<View>
<FlatList ref={flatlist => this.refs.flatlist = flatlist}> ... </FlatList>
<MyActionButton flatlist={this.refs.flatlist}/>
</View>
)
} else if (this.state.page="text"=){
return(
<Text> ... </Text>
)
}
}
}
class MyActionButton extends React.Component {
render(
return(
<ActionButton>
<ActionButtonItem onPress={() => {
console.log("AB props", this.props)
}} />
</ActionButton>
)
)
}
アプリがthis.state.page =「インデックス」で始まるので、物事が動作するように見える:
私は「テキスト」にstate.pageを変更して、私はMyActionButtonを押すと、再び、私が取得戻って「インデックス」に来た場合'AB props', {flatlist: {A LOT OF STUFF HERE}}
は、しかし:
'AB props', {flatlist: undefined}
その小道具が未定義の取得なぜ私はわかりませんどのようにポイントを作るためにそれを修正する実際のFlatListに追加します。
ファーストへの参照を変更することにより、作業得ることができました。第二に、達成したいことを説明することができます –
私はそれをコールバックに変更したが、それでも同じです。ボタンはフラットリストのscrollToOffsetを呼び出すだけなので、アプリケーションが定義されていないとクラッシュする – Enuff