Skip to content

Commit a426f80

Browse files
committed
Fix end listener
1 parent 4ab4e48 commit a426f80

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

src/Transition.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,11 @@ const Transition = functionModule(
712712
{...props}
713713
{...(props.timeout != null ?
714714
{ timeout: props.timeout }
715-
: { nodeRef, addEndListener: endListener() })}
715+
: {
716+
nodeRef,
717+
addEndListener:
718+
props.addEndListener ?? endListener(),
719+
})}
716720
>
717721
{cloneRef(props.children as ReactNode, nodeRef)}
718722
</TransitionComponent>

src/utils/cloneRef.ts

+6-8
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,11 @@ export function endListener() {
6464
* @param done A callback function to be executed when the animation ends.
6565
*/
6666
return (node: HTMLElement, done: () => void) => {
67-
node?.addEventListener(
68-
"transitionend",
69-
(e) => {
70-
if (e.target !== e.currentTarget) return;
71-
done();
72-
},
73-
false,
74-
);
67+
const listener = (e: TransitionEvent) => {
68+
if (e.target !== e.currentTarget) return;
69+
node?.removeEventListener("transitionend", listener, false);
70+
done();
71+
};
72+
node?.addEventListener("transitionend", listener, false);
7573
};
7674
}

0 commit comments

Comments
 (0)