feat:增加 onBodyScroll 回调函数,在表体滚动时返回可视区最后一条数据的 index
This commit is contained in:
parent
b927c3a5eb
commit
bdde396727
|
@ -115,6 +115,7 @@ var propTypes = {
|
|||
rowDraggAble: _propTypes2["default"].bool,
|
||||
onDropRow: _propTypes2["default"].func,
|
||||
onDragRowStart: _propTypes2["default"].func,
|
||||
onBodyScroll: _propTypes2["default"].func,
|
||||
bodyDisplayInRow: _propTypes2["default"].bool, // 表格内容超出列宽度时进行换行 or 以...形式展现
|
||||
headerDisplayInRow: _propTypes2["default"].bool, // 表头内容超出列宽度时进行换行 or 以...形式展现
|
||||
showRowNum: _propTypes2["default"].object // 表格是否自动生成序号,格式为{base:number || 0,defaultKey:string || '_index',defaultName:string || '序号'}
|
||||
|
@ -165,6 +166,7 @@ var defaultProps = {
|
|||
rowDraggAble: false,
|
||||
onDropRow: function onDropRow() {},
|
||||
onDragRowStart: function onDragRowStart() {},
|
||||
onBodyScroll: function onBodyScroll() {},
|
||||
bodyDisplayInRow: true,
|
||||
headerDisplayInRow: true,
|
||||
showRowNum: false
|
||||
|
@ -1430,7 +1432,8 @@ var Table = function (_Component) {
|
|||
scroll = _props9$scroll === undefined ? {} : _props9$scroll,
|
||||
clsPrefix = _props9.clsPrefix,
|
||||
handleScrollY = _props9.handleScrollY,
|
||||
handleScrollX = _props9.handleScrollX;
|
||||
handleScrollX = _props9.handleScrollX,
|
||||
onBodyScroll = _props9.onBodyScroll;
|
||||
var _refs = this.refs,
|
||||
fixedColumnsBodyLeft = _refs.fixedColumnsBodyLeft,
|
||||
fixedColumnsBodyRight = _refs.fixedColumnsBodyRight;
|
||||
|
@ -1477,7 +1480,7 @@ var Table = function (_Component) {
|
|||
}
|
||||
this.lastScrollTop = e.target.scrollTop;
|
||||
if (handleScrollY) {
|
||||
(0, _utils.debounce)(handleScrollY(this.lastScrollTop, this.treeType), 300);
|
||||
(0, _utils.debounce)(handleScrollY(this.lastScrollTop, this.treeType, onBodyScroll), 300);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -224,6 +224,7 @@ function bigData(Table) {
|
|||
*@description 根据返回的scrollTop计算当前的索引。此处做了两次缓存一个是根据上一次的currentIndex计算当前currentIndex。另一个是根据当前内容区的数据是否在缓存中如果在则不重新render页面
|
||||
*@param 最新一次滚动的scrollTop
|
||||
*@param treeType是否是树状表
|
||||
*@param callback表体滚动过程中触发的回调
|
||||
*/
|
||||
|
||||
|
||||
|
@ -354,7 +355,7 @@ function bigData(Table) {
|
|||
}
|
||||
};
|
||||
|
||||
this.handleScrollY = function (nextScrollTop, treeType) {
|
||||
this.handleScrollY = function (nextScrollTop, treeType, callback) {
|
||||
//树表逻辑
|
||||
// 关键点是动态的获取startIndex和endIndex
|
||||
// 法子一:子节点也看成普通tr,最开始需要设置一共有多少行,哪行显示哪行不显示如何确定
|
||||
|
@ -446,6 +447,7 @@ function bigData(Table) {
|
|||
_this4.startIndex = startIndex;
|
||||
_this4.endIndex = endIndex;
|
||||
_this4.setState({ needRender: !needRender });
|
||||
callback(parseInt(currentIndex + rowsInView));
|
||||
}
|
||||
}
|
||||
// 向上滚动,当前的index是否已经加载(currentIndex),若干上临界值小于startIndex则重新渲染
|
||||
|
@ -458,6 +460,7 @@ function bigData(Table) {
|
|||
_this4.startIndex = startIndex;
|
||||
_this4.endIndex = _this4.startIndex + loadCount;
|
||||
_this4.setState({ needRender: !needRender });
|
||||
callback(parseInt(currentIndex + rowsInView));
|
||||
}
|
||||
// console.log(
|
||||
// "**index**" + index,
|
||||
|
|
|
@ -62,6 +62,14 @@ class Demo30 extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 表体滚动加载时触发的回调函数
|
||||
* @param endIndex 可视区最后一条数据的 index 序号
|
||||
*/
|
||||
handleBodyScroll = endIndex => {
|
||||
console.log('endIndex:', endIndex);
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
|
@ -72,6 +80,7 @@ class Demo30 extends Component {
|
|||
onRowClick={(record, index, indent) => {
|
||||
console.log('currentIndex--'+index);
|
||||
}}
|
||||
onBodyScroll={this.handleBodyScroll}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -371,7 +371,11 @@ const BigDataTable = bigData(Table);
|
|||
|
||||
#### API
|
||||
|
||||
无
|
||||
Table 组件参数:
|
||||
|
||||
| 参数 | 说明 | 类型 | 返回值 |
|
||||
| ------ | ---------- | -------- | ---- |
|
||||
| onBodyScroll | 表体滚动加载时触发的回调函数 | function(endIndex) | `endIndex` : 可视区最后一条数据的 index 序号 |
|
||||
|
||||
#### bigData 使用示例
|
||||
- [万行以上数据渲染](http://design.yonyoucloud.com/tinper-bee/bee-table#%E4%B8%87%E8%A1%8C%E4%BB%A5%E4%B8%8A%E6%95%B0%E6%8D%AE%E6%B8%B2%E6%9F%93)
|
||||
|
|
|
@ -59,6 +59,7 @@ const propTypes = {
|
|||
rowDraggAble: PropTypes.bool,
|
||||
onDropRow: PropTypes.func,
|
||||
onDragRowStart: PropTypes.func,
|
||||
onBodyScroll: PropTypes.func,
|
||||
bodyDisplayInRow: PropTypes.bool, // 表格内容超出列宽度时进行换行 or 以...形式展现
|
||||
headerDisplayInRow: PropTypes.bool, // 表头内容超出列宽度时进行换行 or 以...形式展现
|
||||
showRowNum: PropTypes.object, // 表格是否自动生成序号,格式为{base:number || 0,defaultKey:string || '_index',defaultName:string || '序号'}
|
||||
|
@ -100,6 +101,7 @@ const defaultProps = {
|
|||
rowDraggAble:false,
|
||||
onDropRow: ()=>{},
|
||||
onDragRowStart: ()=>{},
|
||||
onBodyScroll: ()=>{},
|
||||
bodyDisplayInRow: true,
|
||||
headerDisplayInRow: true,
|
||||
showRowNum: false,
|
||||
|
@ -1228,7 +1230,7 @@ class Table extends Component {
|
|||
|
||||
handleBodyScroll(e) {
|
||||
const headTable = this.headTable;
|
||||
const { scroll = {},clsPrefix,handleScrollY, handleScrollX} = this.props;
|
||||
const { scroll = {},clsPrefix,handleScrollY, handleScrollX, onBodyScroll} = this.props;
|
||||
const {fixedColumnsBodyLeft, fixedColumnsBodyRight } = this.refs;
|
||||
// Prevent scrollTop setter trigger onScroll event
|
||||
// http://stackoverflow.com/q/1386696
|
||||
|
@ -1279,7 +1281,7 @@ class Table extends Component {
|
|||
this.lastScrollTop = e.target.scrollTop;
|
||||
if(handleScrollY){
|
||||
debounce(
|
||||
handleScrollY(this.lastScrollTop,this.treeType),
|
||||
handleScrollY(this.lastScrollTop,this.treeType,onBodyScroll),
|
||||
300)
|
||||
}
|
||||
|
||||
|
|
|
@ -212,8 +212,9 @@ export default function bigData(Table) {
|
|||
*@description 根据返回的scrollTop计算当前的索引。此处做了两次缓存一个是根据上一次的currentIndex计算当前currentIndex。另一个是根据当前内容区的数据是否在缓存中如果在则不重新render页面
|
||||
*@param 最新一次滚动的scrollTop
|
||||
*@param treeType是否是树状表
|
||||
*@param callback表体滚动过程中触发的回调
|
||||
*/
|
||||
handleScrollY = (nextScrollTop, treeType) => {
|
||||
handleScrollY = (nextScrollTop, treeType, callback) => {
|
||||
//树表逻辑
|
||||
// 关键点是动态的获取startIndex和endIndex
|
||||
// 法子一:子节点也看成普通tr,最开始需要设置一共有多少行,哪行显示哪行不显示如何确定
|
||||
|
@ -308,6 +309,7 @@ export default function bigData(Table) {
|
|||
this.startIndex = startIndex;
|
||||
this.endIndex = endIndex;
|
||||
this.setState({ needRender: !needRender });
|
||||
callback(parseInt(currentIndex + rowsInView));
|
||||
}
|
||||
}
|
||||
// 向上滚动,当前的index是否已经加载(currentIndex),若干上临界值小于startIndex则重新渲染
|
||||
|
@ -320,6 +322,7 @@ export default function bigData(Table) {
|
|||
this.startIndex = startIndex;
|
||||
this.endIndex = this.startIndex + loadCount;
|
||||
this.setState({ needRender: !needRender });
|
||||
callback(parseInt(currentIndex + rowsInView));
|
||||
}
|
||||
// console.log(
|
||||
// "**index**" + index,
|
||||
|
|
Loading…
Reference in New Issue