如何在blueprintjs中实现无限滚动table
How to implement infinite scrolling in blueprintjs table
有人在 BlueprintJS table 中实现了无限滚动吗?
我的要求是在用户滚动时从 api 获取 table 日期 table.I 已经尝试使用 BlueprintJS table 的 onCompleteRender
道具,但它不符合我的要求是一次获取所有页面。
我试过的是
<div>
{this.props.spiders.spiders.length !==0 ?
<Table numRows={this.props.spiders.spiders.length} defaultRowHeight={45} defaultColumnWidth={180} className="bp3-dark tableheight" onCompleteRender={this.scroll} enableRowHeader={false}>
<Column name="Name" cellRenderer={cellRenderer} />
<Column name="Developer" cellRenderer={cellRenderer} />
<Column name="Status" cellRenderer={cellRenderer} />
<Column name="Workers" cellRenderer={cellRenderer} />
<Column name="Customer" cellRenderer={cellRenderer} />
<Column name="Last Run" cellRenderer={cellRenderer} />
<Column name="Proxy" cellRenderer={cellRenderer} />
</Table> :''}
</div>
我的scroll
方法是
scroll = () =>{
if(this.props.spiders.next!=null)
{
this.props.spiders.page = this.props.spiders.page + 1;
this.props.pagination()
}
}
我们可以使用onWheel
事件来监听滚动事件,然后检查我们是否在元素底部附近加载下一个page.It可以实现为
<div className="spiderList" id="spidertable" onWheel={this.scrolling} ref="spiders" >
{this.props.spiders.spiders.length !== 0 ?
<Table className="bp3-dark" numRows={this.props.spiders.spiders.length} defaultRowHeight={45} defaultColumnWidth={180} enableRowHeader={false} >
<Column name="Name" cellRenderer={cellRenderer} />
<Column name="Developer" cellRenderer={cellRenderer} />
<Column name="Status" cellRenderer={cellRenderer} />
<Column name="Workers" cellRenderer={cellRenderer} />
<Column name="Customer" cellRenderer={cellRenderer} />
<Column name="Last Run" cellRenderer={cellRenderer} />
<Column name="Proxy" cellRenderer={cellRenderer} />
</Table> : ''}
</div>
滚动处理程序需要检查 div
的底部是否已经到达,这可以使用
来完成
scrolling() {
const table = document.getElementById('spidertable')
if (this.isBottom(table)) {
if (this.props.spiders.next != null && this.props.loading === false) {
this.props.spiders.page = this.props.spiders.page + 1;
//call the api to fetch more table pages
}
}
}
我们可以使用下面的方法
检测用户是否滚动到table的底部
isBottom(el) {
return el.getBoundingClientRect().bottom <= window.innerHeight;
}
有人在 BlueprintJS table 中实现了无限滚动吗?
我的要求是在用户滚动时从 api 获取 table 日期 table.I 已经尝试使用 BlueprintJS table 的 onCompleteRender
道具,但它不符合我的要求是一次获取所有页面。
我试过的是
<div>
{this.props.spiders.spiders.length !==0 ?
<Table numRows={this.props.spiders.spiders.length} defaultRowHeight={45} defaultColumnWidth={180} className="bp3-dark tableheight" onCompleteRender={this.scroll} enableRowHeader={false}>
<Column name="Name" cellRenderer={cellRenderer} />
<Column name="Developer" cellRenderer={cellRenderer} />
<Column name="Status" cellRenderer={cellRenderer} />
<Column name="Workers" cellRenderer={cellRenderer} />
<Column name="Customer" cellRenderer={cellRenderer} />
<Column name="Last Run" cellRenderer={cellRenderer} />
<Column name="Proxy" cellRenderer={cellRenderer} />
</Table> :''}
</div>
我的scroll
方法是
scroll = () =>{
if(this.props.spiders.next!=null)
{
this.props.spiders.page = this.props.spiders.page + 1;
this.props.pagination()
}
}
我们可以使用onWheel
事件来监听滚动事件,然后检查我们是否在元素底部附近加载下一个page.It可以实现为
<div className="spiderList" id="spidertable" onWheel={this.scrolling} ref="spiders" >
{this.props.spiders.spiders.length !== 0 ?
<Table className="bp3-dark" numRows={this.props.spiders.spiders.length} defaultRowHeight={45} defaultColumnWidth={180} enableRowHeader={false} >
<Column name="Name" cellRenderer={cellRenderer} />
<Column name="Developer" cellRenderer={cellRenderer} />
<Column name="Status" cellRenderer={cellRenderer} />
<Column name="Workers" cellRenderer={cellRenderer} />
<Column name="Customer" cellRenderer={cellRenderer} />
<Column name="Last Run" cellRenderer={cellRenderer} />
<Column name="Proxy" cellRenderer={cellRenderer} />
</Table> : ''}
</div>
滚动处理程序需要检查 div
的底部是否已经到达,这可以使用
scrolling() {
const table = document.getElementById('spidertable')
if (this.isBottom(table)) {
if (this.props.spiders.next != null && this.props.loading === false) {
this.props.spiders.page = this.props.spiders.page + 1;
//call the api to fetch more table pages
}
}
}
我们可以使用下面的方法
检测用户是否滚动到table的底部 isBottom(el) {
return el.getBoundingClientRect().bottom <= window.innerHeight;
}