内存泄漏问题
This commit is contained in:
parent
2fdd8a8982
commit
cf4d60a8c8
|
@ -691,7 +691,7 @@ var Table = function (_Component) {
|
||||||
var expandIconAsCell = fixed !== 'right' ? props.expandIconAsCell : false;
|
var expandIconAsCell = fixed !== 'right' ? props.expandIconAsCell : false;
|
||||||
var expandIconColumnIndex = fixed !== 'right' ? props.expandIconColumnIndex : -1;
|
var expandIconColumnIndex = fixed !== 'right' ? props.expandIconColumnIndex : -1;
|
||||||
if (props.lazyLoad && props.lazyLoad.preHeight && indent == 0) {
|
if (props.lazyLoad && props.lazyLoad.preHeight && indent == 0) {
|
||||||
rst.push(_react2["default"].createElement(_TableRow2["default"], { height: props.lazyLoad.preHeight, columns: [], className: '', store: this.store, visible: true }));
|
rst.push(_react2["default"].createElement(_TableRow2["default"], { height: props.lazyLoad.preHeight, columns: [], className: '', key: 'table_row_first', store: this.store, visible: true }));
|
||||||
}
|
}
|
||||||
var lazyCurrentIndex = props.lazyLoad && props.lazyLoad.startIndex ? props.lazyLoad.startIndex : 0;
|
var lazyCurrentIndex = props.lazyLoad && props.lazyLoad.startIndex ? props.lazyLoad.startIndex : 0;
|
||||||
var lazyParentIndex = props.lazyLoad && props.lazyLoad.startParentIndex ? props.lazyLoad.startParentIndex : 0;
|
var lazyParentIndex = props.lazyLoad && props.lazyLoad.startParentIndex ? props.lazyLoad.startParentIndex : 0;
|
||||||
|
@ -775,7 +775,7 @@ var Table = function (_Component) {
|
||||||
height: height,
|
height: height,
|
||||||
isHiddenExpandIcon: isHiddenExpandIcon
|
isHiddenExpandIcon: isHiddenExpandIcon
|
||||||
}, onHoverProps, {
|
}, onHoverProps, {
|
||||||
key: key,
|
key: "table_row_" + key + "_" + index,
|
||||||
hoverKey: key,
|
hoverKey: key,
|
||||||
ref: rowRef,
|
ref: rowRef,
|
||||||
store: this.store,
|
store: this.store,
|
||||||
|
@ -801,7 +801,7 @@ var Table = function (_Component) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (props.lazyLoad && props.lazyLoad.sufHeight && indent == 0) {
|
if (props.lazyLoad && props.lazyLoad.sufHeight && indent == 0) {
|
||||||
rst.push(_react2["default"].createElement(_TableRow2["default"], { height: props.lazyLoad.sufHeight, columns: [], className: '', store: this.store, visible: true }));
|
rst.push(_react2["default"].createElement(_TableRow2["default"], { height: props.lazyLoad.sufHeight, key: 'table_row_end', columns: [], className: '', store: this.store, visible: true }));
|
||||||
}
|
}
|
||||||
return rst;
|
return rst;
|
||||||
};
|
};
|
||||||
|
@ -809,7 +809,8 @@ var Table = function (_Component) {
|
||||||
Table.prototype.getRows = function getRows(columns, fixed) {
|
Table.prototype.getRows = function getRows(columns, fixed) {
|
||||||
//统计index,只有含有鼠表结构才有用,因为数表结构时,固定列的索引取值有问题
|
//统计index,只有含有鼠表结构才有用,因为数表结构时,固定列的索引取值有问题
|
||||||
this.treeRowIndex = 0;
|
this.treeRowIndex = 0;
|
||||||
return this.getRowsByData(this.state.data, true, 0, columns, fixed);
|
var rs = this.getRowsByData(this.state.data, true, 0, columns, fixed);
|
||||||
|
return rs;
|
||||||
};
|
};
|
||||||
|
|
||||||
Table.prototype.getColGroup = function getColGroup(columns, fixed) {
|
Table.prototype.getColGroup = function getColGroup(columns, fixed) {
|
||||||
|
|
|
@ -95,43 +95,37 @@ var TableHeader = function (_Component) {
|
||||||
if (_this.fixedTable.cols) {
|
if (_this.fixedTable.cols) {
|
||||||
_this.fixedTable.cols[_this.drag.currIndex].style.width = newWidth + "px";
|
_this.fixedTable.cols[_this.drag.currIndex].style.width = newWidth + "px";
|
||||||
}
|
}
|
||||||
var oldTableWidth = parseInt(_this.table.table.style.width ? _this.table.table.style.width : _this.table.table.scrollWidth);
|
var newTableWidth = _this.drag.tableWidth + diff + 'px';
|
||||||
var newTableWidth = oldTableWidth + diff;
|
|
||||||
_this.table.table.style.width = newTableWidth; //改变table的width
|
_this.table.table.style.width = newTableWidth; //改变table的width
|
||||||
|
_this.table.innerTableBody.style.width = newTableWidth;
|
||||||
var showScroll = contentDomWidth - newTableWidth - scrollbarWidth;
|
var showScroll = contentDomWidth - newTableWidth - scrollbarWidth;
|
||||||
var fixedLeftHeaderTable = contentTable.querySelector('.u-table-fixed-left .u-table-header');
|
|
||||||
var fixedRighHeadertTable = contentTable.querySelector('.u-table-fixed-right .u-table-header');
|
|
||||||
var contentTableHeader = contentTable.querySelector('.u-table-scroll .u-table-header');
|
|
||||||
var fixedLeftBodyTable = contentTable.querySelector('.u-table-fixed-left .u-table-body-outer');
|
|
||||||
var fixedRightBodyTable = contentTable.querySelector('.u-table-fixed-right .u-table-body-outer');
|
|
||||||
|
|
||||||
//表头滚动条处理
|
//表头滚动条处理
|
||||||
if (headerScroll) {
|
if (headerScroll) {
|
||||||
if (showScroll < 0) {
|
if (showScroll < 0) {
|
||||||
//找到固定列表格,设置表头的marginBottom值为scrollbarWidth;
|
//找到固定列表格,设置表头的marginBottom值为scrollbarWidth;
|
||||||
contentTableHeader.style.overflowX = 'scroll';
|
_this.table.contentTableHeader.style.overflowX = 'scroll';
|
||||||
_this.optTableMargin(fixedLeftHeaderTable, scrollbarWidth);
|
_this.optTableMargin(_this.table.fixedLeftHeaderTable, scrollbarWidth);
|
||||||
_this.optTableMargin(fixedRighHeadertTable, scrollbarWidth);
|
_this.optTableMargin(_this.table.fixedRighHeadertTable, scrollbarWidth);
|
||||||
// fixedLeftHeaderTable && (fixedLeftHeaderTable.style.marginBottom = scrollbarWidth + "px");
|
// fixedLeftHeaderTable && (fixedLeftHeaderTable.style.marginBottom = scrollbarWidth + "px");
|
||||||
// fixedRighHeadertTable && (fixedRighHeadertTable.style.marginBottom = scrollbarWidth + "px");
|
// fixedRighHeadertTable && (fixedRighHeadertTable.style.marginBottom = scrollbarWidth + "px");
|
||||||
//todo inner scroll-x去掉;outer marginbottom 设置成-15px】
|
//todo inner scroll-x去掉;outer marginbottom 设置成-15px】
|
||||||
} else {
|
} else {
|
||||||
contentTableHeader.style.overflowX = 'hidden';
|
_this.table.contentTableHeader.style.overflowX = 'hidden';
|
||||||
_this.optTableMargin(fixedLeftHeaderTable, 0);
|
_this.optTableMargin(_this.table.fixedLeftHeaderTable, 0);
|
||||||
_this.optTableMargin(fixedRighHeadertTable, 0);
|
_this.optTableMargin(_this.table.fixedRighHeadertTable, 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (showScroll < 0) {
|
if (showScroll < 0) {
|
||||||
_this.optTableMargin(fixedLeftBodyTable, '-' + scrollbarWidth);
|
_this.optTableMargin(_this.table.fixedLeftBodyTable, '-' + scrollbarWidth);
|
||||||
_this.optTableMargin(fixedRightBodyTable, '-' + scrollbarWidth);
|
_this.optTableMargin(_this.table.fixedRightBodyTable, '-' + scrollbarWidth);
|
||||||
_this.optTableScroll(fixedLeftBodyTable, { x: 'scroll' });
|
_this.optTableScroll(_this.table.fixedLeftBodyTable, { x: 'scroll' });
|
||||||
_this.optTableScroll(fixedRightBodyTable, { x: 'scroll' });
|
_this.optTableScroll(_this.table.fixedRightBodyTable, { x: 'scroll' });
|
||||||
} else {
|
} else {
|
||||||
_this.optTableMargin(fixedLeftBodyTable, 0);
|
_this.optTableMargin(_this.table.fixedLeftBodyTable, 0);
|
||||||
_this.optTableMargin(fixedRightBodyTable, 0);
|
_this.optTableMargin(_this.table.fixedRightBodyTable, 0);
|
||||||
_this.optTableScroll(fixedLeftBodyTable, { x: 'auto' });
|
_this.optTableScroll(_this.table.fixedLeftBodyTable, { x: 'auto' });
|
||||||
_this.optTableScroll(fixedRightBodyTable, { x: 'auto' });
|
_this.optTableScroll(_this.table.fixedRightBodyTable, { x: 'auto' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,6 +147,7 @@ var TableHeader = function (_Component) {
|
||||||
_this.drag.oldLeft = event.x;
|
_this.drag.oldLeft = event.x;
|
||||||
_this.drag.oldWidth = parseInt(currentObj.style.width);
|
_this.drag.oldWidth = parseInt(currentObj.style.width);
|
||||||
_this.drag.minWidth = currentObj.style.minWidth != "" ? parseInt(currentObj.style.minWidth) : defaultWidth;
|
_this.drag.minWidth = currentObj.style.minWidth != "" ? parseInt(currentObj.style.minWidth) : defaultWidth;
|
||||||
|
_this.drag.tableWidth = parseInt(_this.table.table.style.width ? _this.table.table.style.width : _this.table.table.scrollWidth);
|
||||||
};
|
};
|
||||||
|
|
||||||
_this.onLineMouseUp = function (event) {
|
_this.onLineMouseUp = function (event) {
|
||||||
|
@ -420,6 +415,11 @@ var TableHeader = function (_Component) {
|
||||||
this.initEvent();
|
this.initEvent();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TableHeader.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||||
|
this.removeDragAbleEvent();
|
||||||
|
this.removeDragBorderEvent();
|
||||||
|
};
|
||||||
|
|
||||||
// componentDidMount(){
|
// componentDidMount(){
|
||||||
// this.initTable();
|
// this.initTable();
|
||||||
// this.initEvent();
|
// this.initEvent();
|
||||||
|
@ -466,6 +466,8 @@ var TableHeader = function (_Component) {
|
||||||
|
|
||||||
|
|
||||||
TableHeader.prototype.initTable = function initTable() {
|
TableHeader.prototype.initTable = function initTable() {
|
||||||
|
var contentTable = this.props.contentTable;
|
||||||
|
|
||||||
if (!this.props.dragborder && !this.props.draggable) return;
|
if (!this.props.dragborder && !this.props.draggable) return;
|
||||||
// let el = ReactDOM.findDOMNode(this);
|
// let el = ReactDOM.findDOMNode(this);
|
||||||
var tableDome = this._thead.parentNode;
|
var tableDome = this._thead.parentNode;
|
||||||
|
@ -475,11 +477,18 @@ var TableHeader = function (_Component) {
|
||||||
table.cols = tableDome.getElementsByTagName("col");
|
table.cols = tableDome.getElementsByTagName("col");
|
||||||
table.ths = tableDome.getElementsByTagName("th");
|
table.ths = tableDome.getElementsByTagName("th");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.fixedLeftHeaderTable = contentTable.querySelector('.u-table-fixed-left .u-table-header');
|
||||||
|
table.fixedRighHeadertTable = contentTable.querySelector('.u-table-fixed-right .u-table-header');
|
||||||
|
table.contentTableHeader = contentTable.querySelector('.u-table-scroll .u-table-header');
|
||||||
|
table.fixedLeftBodyTable = contentTable.querySelector('.u-table-fixed-left .u-table-body-outer');
|
||||||
|
table.fixedRightBodyTable = contentTable.querySelector('.u-table-fixed-right .u-table-body-outer');
|
||||||
|
table.innerTableBody = contentTable.querySelector('.u-table-scroll .u-table-body table');
|
||||||
|
|
||||||
this.table = table;
|
this.table = table;
|
||||||
|
|
||||||
if (!this.props.dragborder) return;
|
if (!this.props.dragborder) return;
|
||||||
if (document.getElementById("u-table-drag-thead-" + this.theadKey)) {
|
if (document.getElementById("u-table-drag-thead-" + this.theadKey)) {
|
||||||
//hao 固定列table
|
|
||||||
this.fixedTable = {};
|
this.fixedTable = {};
|
||||||
var _fixedParentContext = document.getElementById("u-table-drag-thead-" + this.theadKey).parentNode;
|
var _fixedParentContext = document.getElementById("u-table-drag-thead-" + this.theadKey).parentNode;
|
||||||
var siblingDom = _fixedParentContext.parentNode.nextElementSibling;
|
var siblingDom = _fixedParentContext.parentNode.nextElementSibling;
|
||||||
|
|
|
@ -246,7 +246,6 @@ var TableRow = function (_Component) {
|
||||||
var showSum = false;
|
var showSum = false;
|
||||||
var className = this.props.className;
|
var className = this.props.className;
|
||||||
|
|
||||||
|
|
||||||
if (this.state.hovered) {
|
if (this.state.hovered) {
|
||||||
className += ' ' + clsPrefix + '-hover';
|
className += ' ' + clsPrefix + '-hover';
|
||||||
}
|
}
|
||||||
|
@ -273,7 +272,7 @@ var TableRow = function (_Component) {
|
||||||
'td',
|
'td',
|
||||||
{
|
{
|
||||||
className: clsPrefix + '-expand-icon-cell',
|
className: clsPrefix + '-expand-icon-cell',
|
||||||
key: 'rc-table-expand-icon-cell'
|
key: 'rc-table-expand-icon-cell-' + i
|
||||||
},
|
},
|
||||||
expandIcon
|
expandIcon
|
||||||
));
|
));
|
||||||
|
@ -286,7 +285,7 @@ var TableRow = function (_Component) {
|
||||||
indent: indent,
|
indent: indent,
|
||||||
index: index,
|
index: index,
|
||||||
column: columns[i],
|
column: columns[i],
|
||||||
key: columns[i].key || columns[i].dataIndex || i,
|
key: index + "_" + (columns[i].key || columns[i].dataIndex || i),
|
||||||
fixed: fixed,
|
fixed: fixed,
|
||||||
showSum: showSum,
|
showSum: showSum,
|
||||||
expandIcon: isColumnHaveExpandIcon ? expandIcon : null
|
expandIcon: isColumnHaveExpandIcon ? expandIcon : null
|
||||||
|
|
|
@ -23,8 +23,6 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||||
|
|
||||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
||||||
// import Checkbox from 'bee-checkbox';
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 参数: 过滤表头
|
* 参数: 过滤表头
|
||||||
|
@ -38,10 +36,10 @@ function multiSelect(Table, Checkbox) {
|
||||||
var _class, _temp, _initialiseProps;
|
var _class, _temp, _initialiseProps;
|
||||||
|
|
||||||
return _temp = _class = function (_Component) {
|
return _temp = _class = function (_Component) {
|
||||||
_inherits(NewMultiSelect, _Component);
|
_inherits(MultiSelect, _Component);
|
||||||
|
|
||||||
function NewMultiSelect(props) {
|
function MultiSelect(props) {
|
||||||
_classCallCheck(this, NewMultiSelect);
|
_classCallCheck(this, MultiSelect);
|
||||||
|
|
||||||
var _this = _possibleConstructorReturn(this, _Component.call(this, props));
|
var _this = _possibleConstructorReturn(this, _Component.call(this, props));
|
||||||
|
|
||||||
|
@ -54,7 +52,7 @@ function multiSelect(Table, Checkbox) {
|
||||||
return _this;
|
return _this;
|
||||||
}
|
}
|
||||||
|
|
||||||
NewMultiSelect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
MultiSelect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
||||||
if (this.props.data != nextProps.data) {
|
if (this.props.data != nextProps.data) {
|
||||||
var obj = this.getCheckedOrIndeter(nextProps.data);
|
var obj = this.getCheckedOrIndeter(nextProps.data);
|
||||||
this.setState(_extends({}, obj, {
|
this.setState(_extends({}, obj, {
|
||||||
|
@ -68,7 +66,7 @@ function multiSelect(Table, Checkbox) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
NewMultiSelect.prototype.getCheckedOrIndeter = function getCheckedOrIndeter(data) {
|
MultiSelect.prototype.getCheckedOrIndeter = function getCheckedOrIndeter(data) {
|
||||||
var obj = {};
|
var obj = {};
|
||||||
var checkStatus = this.setChecked(data);
|
var checkStatus = this.setChecked(data);
|
||||||
if (!checkStatus) {
|
if (!checkStatus) {
|
||||||
|
@ -93,7 +91,7 @@ function multiSelect(Table, Checkbox) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
NewMultiSelect.prototype.setChecked = function setChecked(data) {
|
MultiSelect.prototype.setChecked = function setChecked(data) {
|
||||||
if (!this.isArray(data)) return false;
|
if (!this.isArray(data)) return false;
|
||||||
if (data.length == 0) return false;
|
if (data.length == 0) return false;
|
||||||
var count = 0;
|
var count = 0;
|
||||||
|
@ -119,18 +117,18 @@ function multiSelect(Table, Checkbox) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
NewMultiSelect.prototype.isArray = function isArray(o) {
|
MultiSelect.prototype.isArray = function isArray(o) {
|
||||||
return Object.prototype.toString.call(o) == '[object Array]';
|
return Object.prototype.toString.call(o) == '[object Array]';
|
||||||
};
|
};
|
||||||
|
|
||||||
NewMultiSelect.prototype.render = function render() {
|
MultiSelect.prototype.render = function render() {
|
||||||
var columns = this.props.columns;
|
var columns = this.props.columns;
|
||||||
var data = this.state.data;
|
var data = this.state.data;
|
||||||
|
|
||||||
return _react2["default"].createElement(Table, _extends({}, this.props, { columns: this.getDefaultColumns(columns), data: data }));
|
return _react2["default"].createElement(Table, _extends({}, this.props, { columns: this.getDefaultColumns(columns), data: data }));
|
||||||
};
|
};
|
||||||
|
|
||||||
return NewMultiSelect;
|
return MultiSelect;
|
||||||
}(_react.Component), _class.defaultProps = {
|
}(_react.Component), _class.defaultProps = {
|
||||||
prefixCls: "u-table-mult-select",
|
prefixCls: "u-table-mult-select",
|
||||||
getSelectedDataFunc: function getSelectedDataFunc() {}
|
getSelectedDataFunc: function getSelectedDataFunc() {}
|
||||||
|
|
|
@ -23,8 +23,6 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||||
|
|
||||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
||||||
// import Checkbox from 'bee-checkbox';
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 参数: 过滤表头
|
* 参数: 过滤表头
|
||||||
|
|
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
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "bee-table",
|
"name": "bee-table",
|
||||||
"version": "2.0.6",
|
"version": "2.0.0-alpha.2",
|
||||||
"description": "Table ui component for react",
|
"description": "Table ui component for react",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react",
|
"react",
|
||||||
|
|
Loading…
Reference in New Issue