ListView
に何百ものアイテムをリストアップしようとしています。Android
プラットフォームでReact-Nativeを使用しています。 react-native
のバージョンは0.22
です。ページのロードが、私はデータのバッチを取得し、次のようにデータソースを気力するとonEndReachedは、ReactNativeを使用してAndroidでListViewを使用して期待通りに機能しません。
<ListView dataSource={dataSource}
onEndReached={onEndReached}
renderRow={this.renderRow.bind(this)}/>
:
onEndReached(page) {
let {dataSource = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})} = this.state;
return myService.search({page})
.then(newRows => {
this.setState({
dataSource: dataSource.cloneWithRows(newRows),
page: page
});
});
}
renderRow(row){console.log(row.id); // This is printed for all rows regardless of whether it is displayed on the screen or not}
基本的に何が起こるかである、onEndReached
機能は時々わずかにスライドまたはでトリガされたここに私のListView
コンポーネントですジェスチャーがなくても。この関数は、dataSourceに与えられたすべての行がレンダリングされたときにのみ呼び出されると考えました。奇妙なことに、私のrenderRow
関数は、画面に表示された行だけでなく、すべての行に対して呼び出されることがわかります。私はscrollRenderAheadDistance
を使ってみましたが、役に立たなかった。
誰かが私に間違っていることを教えてもらえますか?
問題は、リストビューをScrollViewの下に置いて、その動作が壊れていたことです。 ScrollViewの外でListViewを削除すると、期待どおりに動作するようになりました。 – cubbuk