Skip to content

Commit a61ec0a

Browse files
committed
perf: collapse tree
1 parent 5bea601 commit a61ec0a

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

components/vc-tree/MotionTreeNode.tsx

+8-15
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@ import {
1111
onBeforeUnmount,
1212
onMounted,
1313
ref,
14-
shallowRef,
1514
Transition,
1615
watch,
1716
} from 'vue';
1817
import { treeNodeProps } from './props';
19-
import { collapseMotion } from '../_util/transition';
18+
import collapseMotion from '../_util/collapseMotion';
2019

2120
export default defineComponent({
2221
name: 'MotionTreeNode',
@@ -36,20 +35,18 @@ export default defineComponent({
3635
const visible = ref(true);
3736
const context = useInjectTreeContext();
3837
const motionedRef = ref(false);
39-
const transitionClass = ref('');
40-
const transitionStyle = shallowRef({});
4138
const transitionProps = computed(() => {
4239
if (props.motion) {
4340
return props.motion;
4441
} else {
45-
return collapseMotion(undefined, transitionStyle, transitionClass);
42+
return collapseMotion();
4643
}
4744
});
48-
const onMotionEnd = (type?: 'appear' | 'leave') => {
45+
const onMotionEnd = (node?: HTMLDivElement, type?: 'appear' | 'leave') => {
4946
if (type === 'appear') {
50-
transitionProps.value?.onAfterAppear?.();
47+
transitionProps.value?.onAfterEnter?.(node);
5148
} else if (type === 'leave') {
52-
transitionProps.value?.onAfterLeave?.();
49+
transitionProps.value?.onAfterLeave?.(node);
5350
}
5451
if (!motionedRef.value) {
5552
props.onMotionEnd();
@@ -83,14 +80,10 @@ export default defineComponent({
8380
<Transition
8481
{...transitionProps.value}
8582
appear={motionType === 'show'}
86-
onAfterAppear={() => onMotionEnd('appear')}
87-
onAfterLeave={() => onMotionEnd('leave')}
83+
onAfterAppear={(node: HTMLDivElement) => onMotionEnd(node, 'appear')}
84+
onAfterLeave={(node: HTMLDivElement) => onMotionEnd(node, 'leave')}
8885
>
89-
<div
90-
v-show={visible.value}
91-
class={[`${context.value.prefixCls}-treenode-motion`, transitionClass.value]}
92-
style={transitionStyle.value}
93-
>
86+
<div v-show={visible.value} class={`${context.value.prefixCls}-treenode-motion`}>
9487
{motionNodes.map((treeNode: FlattenNode) => {
9588
const {
9689
data: { ...restProps },

0 commit comments

Comments
 (0)