diff --git a/src/tree/TreeItem.tsx b/src/tree/TreeItem.tsx index 2f7b70a895..6741a386a4 100644 --- a/src/tree/TreeItem.tsx +++ b/src/tree/TreeItem.tsx @@ -340,7 +340,9 @@ const TreeItem = forwardRef( data-value={node.value} data-level={level} className={classNames(treeClassNames.treeNode, { - [treeClassNames.treeNodeOpen]: node.expanded, + [treeClassNames.treeNodeOpen]: + node.expanded && + (typeof node.data.children === 'boolean' ? node.data.children : node.data.children !== undefined), [treeClassNames.actived]: node.isActivable() ? node.actived : false, [treeClassNames.disabled]: node.isDisabled(), [treeClassNames.treeNodeDraggable]: node.isDraggable(), diff --git a/src/tree/__tests__/tree.test.tsx b/src/tree/__tests__/tree.test.tsx index 4cafa5dadc..2dea5c0542 100644 --- a/src/tree/__tests__/tree.test.tsx +++ b/src/tree/__tests__/tree.test.tsx @@ -197,6 +197,20 @@ describe('Tree test', () => { expect(onChangeFn1).not.toHaveBeenCalled(); }); + it('should calculate right class of tree item.', async () => { + const { container } = await renderTreeWithProps({ + expanded: [1, '1-2', '1-2', 2], + }); + + await mockDelay(300); + const allItems = container.querySelectorAll('.t-tree__item'); + expect(allItems.length).toBe(4); + const nodeOpenItems = container.querySelectorAll('.t-tree__item--open'); + // only set expanded when node has children + // or children is `true` when the tree is lazy + expect(nodeOpenItems.length).toBe(1); + }); + test('props.line', async () => { const data = [ {