feat: treeData支持自定义属性[JCJS-2535]

This commit is contained in:
yangchch6 2020-07-25 11:40:06 +08:00
parent faa939dc34
commit 0f4819bef7
7 changed files with 163 additions and 246 deletions

View File

@ -505,7 +505,8 @@ var Tree = function (_React$Component) {
var selectedNodes = []; var selectedNodes = [];
if (selectedKeys.length) { if (selectedKeys.length) {
(0, _util.loopAllChildren)(this.props.children, function (item) { var treeNodes = this.props.children || treeNode.props.root.cacheTreeNodes;
(0, _util.loopAllChildren)(treeNodes, function (item) {
if (selectedKeys.indexOf(item.key) !== -1) { if (selectedKeys.indexOf(item.key) !== -1) {
selectedNodes.push(item); selectedNodes.push(item);
} }
@ -1283,14 +1284,20 @@ var _initialiseProps = function _initialiseProps() {
} }
var loop = function loop(data) { var loop = function loop(data) {
return data.map(function (item) { return data.map(function (item) {
var key = item.key,
title = item.title,
children = item.children,
isLeaf = item.isLeaf,
others = _objectWithoutProperties(item, ['key', 'title', 'children', 'isLeaf']);
if (item.children) { if (item.children) {
return _react2["default"].createElement( return _react2["default"].createElement(
_TreeNode2["default"], _TreeNode2["default"],
{ key: item.key, title: renderTitle ? renderTitle(item) : item.key, isLeaf: item.isLeaf }, _extends({}, others, { key: key, title: renderTitle ? renderTitle(item) : key, isLeaf: isLeaf }),
loop(item.children) loop(item.children)
); );
} }
return _react2["default"].createElement(_TreeNode2["default"], { key: item.key, title: renderTitle ? renderTitle(item) : item.key, isLeaf: true }); return _react2["default"].createElement(_TreeNode2["default"], _extends({}, others, { key: key, title: renderTitle ? renderTitle(item) : key, isLeaf: true }));
}); });
}; };
return loop(data); return loop(data);

View File

@ -70,7 +70,16 @@ var InfiniteScroll = function (_Component) {
}; };
_this.handleScrollY = function () { _this.handleScrollY = function () {
var rowHeight = _this.props.store.getState().rowHeight; var store = _this.props.store;
var parentElement = _this.getParentElement(_this.scrollComponent);
if (!parentElement) {
return;
}
var scrollEl = parentElement;
var scrollY = scrollEl && scrollEl.clientHeight;
var rowHeight = store.getState().rowHeight;
//默认显示20条rowsInView根据定高算的。在非固定高下这个只是一个大概的值。 //默认显示20条rowsInView根据定高算的。在非固定高下这个只是一个大概的值。
_this.rowsInView = scrollY ? Math.floor(scrollY / rowHeight) : _config2["default"].defaultRowsInView; _this.rowsInView = scrollY ? Math.floor(scrollY / rowHeight) : _config2["default"].defaultRowsInView;

View File

@ -11,6 +11,7 @@ const treeData = [
{ {
title: '0-0', title: '0-0',
key: '0-0', key: '0-0',
ext: '自定义属性',
children: [ children: [
{ {
title: '0-0-0', title: '0-0-0',
@ -48,6 +49,7 @@ const treeData = [
{ {
title: '0-2', title: '0-2',
key: '0-2', key: '0-2',
ext: '自定义属性'
}, },
]; ];

File diff suppressed because one or more lines are too long

371
dist/demo.js vendored

File diff suppressed because one or more lines are too long

2
dist/demo.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -464,7 +464,8 @@ onExpand(treeNode,keyType) {
const selectedNodes = []; const selectedNodes = [];
if (selectedKeys.length) { if (selectedKeys.length) {
loopAllChildren(this.props.children, (item) => { const treeNodes = this.props.children || treeNode.props.root.cacheTreeNodes
loopAllChildren(treeNodes, (item) => {
if (selectedKeys.indexOf(item.key) !== -1) { if (selectedKeys.indexOf(item.key) !== -1) {
selectedNodes.push(item); selectedNodes.push(item);
} }
@ -959,14 +960,15 @@ onExpand(treeNode,keyType) {
return renderTreeNodes(data); return renderTreeNodes(data);
} }
const loop = data => data.map((item) => { const loop = data => data.map((item) => {
const { key, title, children, isLeaf , ...others } = item;
if (item.children) { if (item.children) {
return ( return (
<TreeNode key={item.key} title={renderTitle ? renderTitle(item) : item.key} isLeaf={item.isLeaf}> <TreeNode {...others} key={key} title={renderTitle ? renderTitle(item) : key} isLeaf={isLeaf}>
{loop(item.children)} {loop(item.children)}
</TreeNode> </TreeNode>
); );
} }
return <TreeNode key={item.key} title={renderTitle ? renderTitle(item) : item.key} isLeaf={true}/>; return <TreeNode {...others} key={key} title={renderTitle ? renderTitle(item) : key} isLeaf={true}/>;
}); });
return loop(data); return loop(data);
} }