fix(react/dialogs): listener leak in modal

This commit is contained in:
Elian Doran 2025-08-04 19:54:59 +03:00
parent cb650b70cb
commit 83fb62d4df
No known key found for this signature in database

View File

@ -28,14 +28,23 @@ export default function Modal({ children, className, size, title, footer, onShow
if (onShown || onHidden) { if (onShown || onHidden) {
useEffect(() => { useEffect(() => {
const modalElement = modalRef.current; const modalElement = modalRef.current;
if (modalElement) { if (!modalElement) {
return;
}
if (onShown) {
modalElement.addEventListener("shown.bs.modal", onShown);
}
if (onHidden) {
modalElement.addEventListener("hidden.bs.modal", onHidden);
}
return () => {
if (onShown) { if (onShown) {
modalElement.addEventListener("shown.bs.modal", onShown); modalElement.removeEventListener("shown.bs.modal", onShown);
} }
if (onHidden) { if (onHidden) {
modalElement.addEventListener("hidden.bs.modal", onHidden); modalElement.removeEventListener("hidden.bs.modal", onHidden);
} }
} };
}); });
} }