From 82420a05e09ef92333f1e3352a428c8f4435d92d Mon Sep 17 00:00:00 2001 From: Vladislav Timakov Date: Wed, 29 Jun 2022 17:16:51 +0300 Subject: [PATCH] fix: loadData using key navigation --- docs/examples/dynamic.jsx | 3 +++ src/Tree.tsx | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/examples/dynamic.jsx b/docs/examples/dynamic.jsx index 90fa1606..c5f3876b 100644 --- a/docs/examples/dynamic.jsx +++ b/docs/examples/dynamic.jsx @@ -6,6 +6,9 @@ import Tree from 'rc-tree'; function generateTreeNodes(treeNode) { const arr = []; const key = treeNode.props.eventKey; + if (key === '0-1-0') { + return []; + } for (let i = 0; i < 3; i += 1) { arr.push({ title: `leaf ${key}-${i}`, key: `${key}-${i}` }); } diff --git a/src/Tree.tsx b/src/Tree.tsx index 460a06bf..45e51e62 100644 --- a/src/Tree.tsx +++ b/src/Tree.tsx @@ -1217,7 +1217,7 @@ class Tree extends Rea onKeyDown: React.KeyboardEventHandler = event => { const { activeKey, expandedKeys, checkedKeys, fieldNames } = this.state; - const { onKeyDown, checkable, selectable } = this.props; + const { onKeyDown, checkable, selectable, loadData } = this.props; // >>>>>>>>>> Direction switch (event.which) { @@ -1239,7 +1239,10 @@ class Tree extends Rea const treeNodeRequiredProps = this.getTreeNodeRequiredProps(); const expandable = - activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length; + activeItem.data.isLeaf !== true && + ((!!loadData && !activeItem.data[fieldNames.children]) || // load data on expand + !!(activeItem.data[fieldNames.children] || []).length); + const eventNode = convertNodePropsToEventData({ ...getTreeNodeProps(activeKey, treeNodeRequiredProps), data: activeItem.data,