diff --git a/src/components/Tree.vue b/src/components/Tree.vue
index e9754fa..f18e206 100644
--- a/src/components/Tree.vue
+++ b/src/components/Tree.vue
@@ -220,10 +220,10 @@ export interface TreeProps {
 
 /** 渲染节点数量,可见节点数大于此值且高度超过(容器可视高度能容纳节点数 + bufferNodeAmount)则不会渲染所有可见节点 */
 renderNodeAmount?: number,
- 
+
 /** 根据节点最小高度计算数据总高度 */
 nodeMinHeight?: number,
- 
+
 /** 当滚动到视野外的节点个数大于此值时刷新渲染节点 */
 bufferNodeAmount?: number,
 }
@@ -288,6 +288,7 @@ import { usePublicTreeAPI } from '../hooks/usePublicTreeAPI'
 import { FilterFunctionType } from '../store/tree-store'
 import { pickReadonly } from '../utils'
 import { useExpandAnimation } from '../hooks/useExpandAnimation'
+import {ArgumentsType} from "vitest";
 
 const props = withDefaults(defineProps
(), DEFAULT_TREE_PROPS)
 
@@ -677,6 +678,17 @@ const treeNodePropKeys = [
 
 const treeNodeProps = reactive(pickReadonly(toRefs(props), ...treeNodePropKeys))
 
+const setExpandExpose = (...args: ArgumentsType
) => {
+ if (props.animation) {
+ const node = getNode(args[0]);
+ if(node) {
+ expandAnimation.updateBeforeExpand(node)
+ }
+ }
+
+ setExpand(...args)
+}
+
 defineExpose({
 setData,
 setChecked,
@@ -685,7 +697,7 @@ defineExpose({
 clearChecked,
 setSelected,
 clearSelected,
- setExpand,
+ setExpand: setExpandExpose,
 setExpandKeys,
 setExpandAll,
 getCheckedNodes,
diff --git a/src/hooks/usePublicTreeAPI.ts b/src/hooks/usePublicTreeAPI.ts
index d22737f..0953acf 100644
--- a/src/hooks/usePublicTreeAPI.ts
+++ b/src/hooks/usePublicTreeAPI.ts
@@ -5,7 +5,7 @@ import { ITreeNodeOptions } from "../store/tree-node"
 import { FilterFunctionType } from "../store/tree-store"
 import { TreeProps } from "../components/Tree.vue"
 
-type IUsePublicTreeAPIProps = Required {
+ return nonReactive.store.setExpand(key, value, expandParent)
 }
 function setExpandKeys(keys: TreeNodeKeyType[], value: boolean): void {
 nonReactive.store.setExpandKeys(keys, value)
diff --git a/src/store/tree-store.ts b/src/store/tree-store.ts
index 15d1bd1..169641f 100644
--- a/src/store/tree-store.ts
+++ b/src/store/tree-store.ts
@@ -366,13 +366,13 @@ export default class TreeStore extends TreeEventTarget {
 * @param triggerEvent 是否触发事件
 * @param triggerDataChange 是否触发 `data-change` 事件以通知外部刷新视图
 */
- setExpand(
+ async setExpand(
 key: TreeNodeKeyType,
 value: boolean,
 expandParent: boolean = false,
 triggerEvent: boolean = true,
 triggerDataChange: boolean = true
- ): void {
+ ): Promise {
 const node = this.mapData[key]
 if (!node || (!expandParent && node.isLeaf)) return
 
@@ -386,7 +386,7 @@ export default class TreeStore extends TreeEventTarget {
 if (triggerDataChange) {
 this.emit('visible-data-change')
 }
- new Promise((resolve, reject) => {
+ await new Promise((resolve, reject) => {
 const load = this.options.load as Function
 load(node, resolve, reject)
 })
@@ -446,7 +446,7 @@ export default class TreeStore extends TreeEventTarget {
 }
 
 if (expandParent && node._parent && value) {
- this.setExpand(
+ await this.setExpand(
 node._parent[this.options.keyField],
 value,
 expandParent,
@@ -461,14 +461,15 @@ export default class TreeStore extends TreeEventTarget {
 * @param keys 展开的节点 key 数组
 * @param value 是否展开
 */
- setExpandKeys(
+ async setExpandKeys(
 keys: TreeNodeKeyType[],
 value: boolean,
 triggerDataChange: boolean = true
- ): void {
- keys.forEach(key => {
- this.setExpand(key, value, false, false, false)
- })
+ ): Promise {
+
+ for (const key of keys) {
+ await this.setExpand(key, value, false, false, false)
+ }
 
 if (triggerDataChange) {
 this.emit('visible-data-change')
@@ -1271,6 +1272,7 @@ export default class TreeStore extends TreeEventTarget {
 * @param node 需要勾选的节点
 */
 private checkParentNode(node: TreeNode): void {
+ if(!this.options.cascade) return
 const length = node.children.length
 if (!length) return
 let hasChecked = false