フラットリストをビューで囲んでいる場合、囲んでいるビューを削除すると、onEndReachedが無限にトリガーされますonEndReachedがまったくトリガーされません。
render() {
return (
<Root>
<Container>
<Content>
<View>
{this.state.listView && (
<FlatList
data={this.state.variants}
keyExtractor={this._keyExtractor}
onEndReachedThreshold={0.5}
onEndReached={({ distanceFromEnd }) => {
console.log(
"on end reached ",
distanceFromEnd
);
this.loadMore();
}}
numColumns={1}
renderItem={({ item, index }) => (
<CatalogRow
item={item}
in_wishlist={this.state.in_wishlist}
toggleWishlist={() =>
this.toggleWishlist(item.title)
}
listView={this.state.listView}
/>
)}
/>
)}
</View>
</Content>
</Container>
</Root>
);
}
そして、私のdistanceFromEnd
は、トリガーされると0、960、1200のような値を取ります。それは何を示していますか?反応ネイティブ0.47.2を使用しています
それは囲み<Content>
鬼ごっこ。反応ネイティブタグをネイティブベースタグに埋め込むと、このような問題が発生することがあります。 contentタグとcontainerタグをView
タグに置き換えましたが、正常に機能します。
反応ネイティブ0.50.3で同じ問題があります
onEndReached
を使用する場合は、<Flatlist>
を<ScrollView>
で使用しないでください。フラットリストで高さが見つからないためです。
代わりに<View>
を使用してください
私はそれを次のように使用します:
handleMore = () => {
// fetch more here
};
<FlatList
onEndReached={this.handleMore}
/>
RN 0.52でも同じ問題があります
Flatlistが高さを見つけられないため、このように見えます。したがって、彼はリストの終わりを見つけることができません。
Flex = 1のビューでフラットリストをラップして修正する
<View style={{flex: 1}} > <Flatlist /> <View>