react-templates/sample/InfiniteScroll.js

38 lines
1.0 KiB
JavaScript

define([
'lodash',
'jquery',
'react'
], function (_, $, React) {
'use strict';
var InfiniteScroll = React.createClass({
displayName: 'InfiniteScroll',
gettingMore: false,
onLoadMoreFinished: function () {
this.gettingMore = false;
},
onScroll: function (evt) {
if (!this.props.onLoadMore || this.gettingMore) {
return;
}
var threshold = this.props.threshold || 0;
var raw = evt.target;
if (raw.scrollTop + raw.offsetHeight + threshold >= raw.scrollHeight) {
this.gettingMore = true;
this.props.onLoadMore(this.onLoadMoreFinished);
}
},
render: function () {
var passedProps = _.omit(this.props, ['onLoadMore', 'threshold', 'children', 'onScroll']);
passedProps.onScroll = this.onScroll;
return React.DOM.div(passedProps, this.props.children);
}
});
return InfiniteScroll;
});