From ca5931e8c4b52a45e38c2582e2616e7fbefabd29 Mon Sep 17 00:00:00 2001 From: Akuria <46207353+Akur1a@users.noreply.github.com> Date: Sat, 16 May 2026 10:41:42 +0800 Subject: [PATCH] fix: preserve tree default value when treeData starts empty (#7908) When treeData is initially an empty array (e.g. before async data arrives), updateTreeValue() would clear the modelValue because no matching items could be found in the empty flattened data. This caused default values to be lost. Only call updateTreeValue() when flattenData has items, so that modelValue is preserved until the actual tree data arrives. Fixes #6522 --- .changeset/tree-default-value.md | 5 +++++ packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/tree-default-value.md diff --git a/.changeset/tree-default-value.md b/.changeset/tree-default-value.md new file mode 100644 index 000000000..3b82bf789 --- /dev/null +++ b/.changeset/tree-default-value.md @@ -0,0 +1,5 @@ +--- +"@vben-core/shadcn-ui": patch +--- + +fix: preserve tree default value when treeData starts empty diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue b/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue index 9dc784334..9ed9e3e9d 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue @@ -70,7 +70,9 @@ let lastTreeData: any = null; onMounted(() => { watchEffect(() => { flattenData.value = flatten(props.treeData, props.childrenField); - updateTreeValue(); + if (flattenData.value.length > 0) { + updateTreeValue(); + } // 只在 treeData 变化时执行展开 const currentTreeData = JSON.stringify(props.treeData);