From 06b2998de82e49cc6a6a7ffa1bed1cc207f7b050 Mon Sep 17 00:00:00 2001 From: Spencer Ahrens Date: Wed, 6 Apr 2016 14:08:33 -0700 Subject: [PATCH] Rework scroll management Reviewed By: devknoll Differential Revision: D3138464 fb-gh-sync-id: fd1bb7f623c689836ae52ea8bf384d8efccddfea fbshipit-source-id: fd1bb7f623c689836ae52ea8bf384d8efccddfea --- Libraries/Experimental/WindowedListView.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Libraries/Experimental/WindowedListView.js b/Libraries/Experimental/WindowedListView.js index 973b93f16..94b60b5a4 100644 --- a/Libraries/Experimental/WindowedListView.js +++ b/Libraries/Experimental/WindowedListView.js @@ -154,6 +154,11 @@ type Props = { * This determines how frequently events such as scroll and layout can trigger a re-render. */ recomputeRowsBatchingPeriod: number; + /** + * Called when rows will be mounted/unmounted. Mounted rows always form a contiguous block so it is expressed as a + * range of start plus count. + */ + onMountedRowsWillChange: (firstIdx: number, count: number) => void; }; const defaultProps = { enableDangerousRecycling: false, @@ -368,6 +373,7 @@ class WindowedListView extends React.Component { } } if (this.state.firstRow !== firstRow || this.state.lastRow !== lastRow) { + this.props.onMountedRowsWillChange && this.props.onMountedRowsWillChange(firstRow, lastRow - firstRow + 1); console.log('WLV: row render range changed:', {firstRow, lastRow}); } this.setState({firstRow, lastRow});