次のようなFlastListがあります。
<FlatList
pagingEnabled={true}
horizontal={true}
showsHorizontalScrollIndicator={false}
data={[ {key:"A"}, {key:"B"} ]}
renderItem={ ({item, index}) => <MyComponent /> }
/>
コンポーネントの幅を設定して、一度に1ページだけが画面に表示されるようにします。現在のページ(または、現在表示されているコンポーネント)を確認するにはどうすればよいですか?
あなたのようなVirtualizedList
でページングを有効にしてコンポーネントを構築しました。 ScrollViewのonMomentumScrollEnd
ハンドラーを使用して、contentOffsetに基づいて現在のページを決定しました。 onMomentumScrollEnd
ハンドラーは、ユーザーがページ間をスワイプした後にスクロールアニメーションが停止したときに呼び出されます。標準のonScroll
イベントのようなイベントオブジェクトがあります。 nativeEvent.contentOffset.x
を使用して、どのページにいるかを次のように判断できます。
class Example extends React.Component {
onScrollEnd(e) {
let contentOffset = e.nativeEvent.contentOffset;
let viewSize = e.nativeEvent.layoutMeasurement;
// Divide the horizontal offset by the width of the view to see which page is visible
let pageNum = Math.floor(contentOffset.x / viewSize.width);
console.log('scrolled to page ', pageNum);
}
render() {
return
<VirtualizedList
horizontal
pagingEnabled
onMomentumScrollEnd={this.onScrollEnd} />
}
}
スペースを節約するために、他のVirtualizedList
小道具を残しました。 FlatList
コンポーネントはVirtualizedList
上に構築されているため、この例はうまく機能します。