Skip to content

Commit 4f29b11

Browse files
authored
Merge pull request #924 from duenyang/master
fix: omi-transition 动画enter、leave多次同时运行问题修复
2 parents 103aad9 + 6675b2f commit 4f29b11

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

packages/omi-transition/src/index.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ registerDirective('transition', (dom: DomType, options: TransitionOptions) => {
2020
mutations.forEach((mutation) => {
2121
if (mutation.type === 'attributes' && mutation.attributeName === 'show') {
2222
const show = getShowAttribute(dom)
23-
updateClasses(dom, name, show, delay, options)
23+
dom["__updateClasses"](dom, name, show, delay, options)
2424
}
2525
})
2626
})
@@ -50,11 +50,18 @@ registerDirective('transition', (dom: DomType, options: TransitionOptions) => {
5050
dom.addEventListener('animationend', onTransitionEnd)
5151

5252
// 将 onTransitionEnd 函数存储在元素上
53-
5453
dom['__onTransitionEnd'] = onTransitionEnd
5554

55+
// 清除旧的方法
56+
if(dom["__updateClasses"]){
57+
dom["__updateClasses"] = null;
58+
}
59+
60+
// 给每个dom添加方法,增加debounce防止enter和leave同时多次触发
61+
dom["__updateClasses"] = debounce(updateClasses, 0);
62+
5663
const show = getShowAttribute(dom)
57-
updateClasses(dom, name, show, delay, options)
64+
dom["__updateClasses"](dom, name, show, delay, options)
5865
})
5966

6067
function getShowAttribute(dom: HTMLElement | Component<{ show: boolean }>): boolean {

0 commit comments

Comments
 (0)