diff --git a/ShadowEditor.UI/src/tree/Tree.jsx b/ShadowEditor.UI/src/tree/Tree.jsx index 54a7beb3..b20c025e 100644 --- a/ShadowEditor.UI/src/tree/Tree.jsx +++ b/ShadowEditor.UI/src/tree/Tree.jsx @@ -12,37 +12,28 @@ class Tree extends React.Component { constructor(props) { super(props); - const { data, onExpand, onSelect, onDoubleClick } = this.props; + const { onExpand, onSelect, onDoubleClick } = this.props; this.expanded = {}; - var expanded = {}; - - this._traverseNode(data, node => { - if (node.expand) { - expanded[node.value] = true; - } - }); - - this.state = { - expanded: expanded, - }; - this.handleExpandNode = this.handleExpandNode.bind(this, onExpand); this.handleClick = this.handleClick.bind(this, onSelect); this.handleDoubleClick = this.handleDoubleClick.bind(this, onDoubleClick); } - _traverseNode(list, callback) { - list.forEach(n => { - callback && callback(n); - Array.isArray(n.children) && this._traverseNode(n.children, callback); - }); - } - render() { const { data, className, style } = this.props; + // 获取展开节点信息 + var expanded = this.expanded; + + this.traverseNode(data, node => { + if (node.expanded) { + expanded[node.value] = true; + } + }); + + // 创建节点 var list = []; Array.isArray(data) && data.forEach(n => { @@ -52,10 +43,17 @@ class Tree extends React.Component { return ; } + traverseNode(list, callback) { + list.forEach(n => { + callback && callback(n); + Array.isArray(n.children) && this.traverseNode(n.children, callback); + }); + } + createNode(data) { const leaf = !data.children || data.children.length === 0; - const expanded = this.state.expanded; + const expanded = this.expanded; const children = leaf ? null : (