@@ -20,7 +20,7 @@ registerDirective('transition', (dom: DomType, options: TransitionOptions) => {
20
20
mutations . forEach ( ( mutation ) => {
21
21
if ( mutation . type === 'attributes' && mutation . attributeName === 'show' ) {
22
22
const show = getShowAttribute ( dom )
23
- updateClasses ( dom , name , show , delay , options )
23
+ dom [ "__updateClasses" ] ( dom , name , show , delay , options )
24
24
}
25
25
} )
26
26
} )
@@ -50,11 +50,18 @@ registerDirective('transition', (dom: DomType, options: TransitionOptions) => {
50
50
dom . addEventListener ( 'animationend' , onTransitionEnd )
51
51
52
52
// 将 onTransitionEnd 函数存储在元素上
53
-
54
53
dom [ '__onTransitionEnd' ] = onTransitionEnd
55
54
55
+ // 清除旧的方法
56
+ if ( dom [ "__updateClasses" ] ) {
57
+ dom [ "__updateClasses" ] = null ;
58
+ }
59
+
60
+ // 给每个dom添加方法,增加debounce防止enter和leave同时多次触发
61
+ dom [ "__updateClasses" ] = debounce ( updateClasses , 0 ) ;
62
+
56
63
const show = getShowAttribute ( dom )
57
- updateClasses ( dom , name , show , delay , options )
64
+ dom [ "__updateClasses" ] ( dom , name , show , delay , options )
58
65
} )
59
66
60
67
function getShowAttribute ( dom : HTMLElement | Component < { show : boolean } > ) : boolean {
0 commit comments