diff --git a/src/MasonryList.js b/src/MasonryList.js index ac1ba32..95ed82e 100644 --- a/src/MasonryList.js +++ b/src/MasonryList.js @@ -119,7 +119,7 @@ export default class MasonryList extends React.Component { state = _stateFromProps(this.props); _listRefs: Array = []; _scrollRef: ?ScrollView; - _endsReached = 0; + _endReached = false; componentWillReceiveProps(newProps: Props) { this.setState(_stateFromProps(newProps)); @@ -152,6 +152,7 @@ export default class MasonryList extends React.Component { }; _onContentSizeChange = (width, height) => { + this._endReached = false; this._listRefs.forEach( list => list && @@ -197,6 +198,16 @@ export default class MasonryList extends React.Component { ); }; + _onEndReached = event => { + if (this._endReached) { + return; + } + this._endReached = true; + if (this.props.onEndReached) { + this.props.onEndReached(event); + } + }; + _getItemLayout = (columnIndex, rowIndex) => { const column = this.state.columns[columnIndex]; let offset = 0; @@ -248,8 +259,7 @@ export default class MasonryList extends React.Component { renderItem({ item, index, column: col.index })} renderScrollComponent={this._renderScrollComponent} keyExtractor={keyExtractor} - onEndReached={onEndReached} - onEndReachedThreshold={this.props.onEndReachedThreshold} + onEndReached={this._onEndReached} removeClippedSubviews={false} />, )}