diff --git a/packages/components/tree/hooks/useTreeStore.ts b/packages/components/tree/hooks/useTreeStore.ts index 4af2d54856..dec80a90c4 100644 --- a/packages/components/tree/hooks/useTreeStore.ts +++ b/packages/components/tree/hooks/useTreeStore.ts @@ -55,11 +55,32 @@ export default function useTreeStore(state: TypeTreeState) { const updateExpanded = () => { const { expandParent } = props; - if (!Array.isArray(tExpanded.value)) return; + + const expandedValueSet = new Set(); + + const getValueParentsToSet = (values: TreeNodeValue[]) => { + values.forEach((val) => { + const parents = store.getParents(val); + parents.forEach((parent) => { + expandedValueSet.add(parent.value); + }); + }); + }; + + if (Array.isArray(tValue.value)) { + getValueParentsToSet(tValue.value); + } + + if (Array.isArray(tExpanded.value)) { + tExpanded.value.forEach((value) => expandedValueSet.add(value)); + } + + const expandedValue = Array.from(expandedValueSet); + // 初始化展开状态 // 校验是否自动展开父节点 const expandedMap = new Map(); - tExpanded.value.forEach((val) => { + expandedValue.forEach((val) => { expandedMap.set(val, true); if (expandParent) { const node = store.getNode(val); diff --git a/test/unit/snap/__snapshots__/csr.test.js.snap b/test/unit/snap/__snapshots__/csr.test.js.snap index bb0bd21748..bf90cdb924 100644 --- a/test/unit/snap/__snapshots__/csr.test.js.snap +++ b/test/unit/snap/__snapshots__/csr.test.js.snap @@ -182116,7 +182116,7 @@ exports[`csr snapshot test > csr test ./packages/components/tree/_example/contro
csr test ./packages/components/tree/_example/contro +
+
+ + + + + + +
+
+ + + + + +
ssr test ./packages/components/tree/_example/base.v exports[`ssr snapshot test > ssr test ./packages/components/tree/_example/checkable.vue 1`] = `"
可选:
严格模式:
"`; -exports[`ssr snapshot test > ssr test ./packages/components/tree/_example/controlled.vue 1`] = `"
选中节点:
checked:
展开节点:
expanded:
高亮节点:
actived:
可选:
节点可高亮:
受控同步节点:
2
"`; +exports[`ssr snapshot test > ssr test ./packages/components/tree/_example/controlled.vue 1`] = `"
选中节点:
checked:
展开节点:
expanded:
高亮节点:
actived:
可选:
节点可高亮:
受控同步节点:
2
"`; exports[`ssr snapshot test > ssr test ./packages/components/tree/_example/debug-data.vue 1`] = `"

数据切换

切换数据:
默认展开全部:
可选:
节点可高亮:
展开动画:
"`;