diff --git a/src/components/Modal/BaseModal.js b/src/components/Modal/BaseModal.js index 8035eca3d96a..8de95d9b3b2a 100644 --- a/src/components/Modal/BaseModal.js +++ b/src/components/Modal/BaseModal.js @@ -71,8 +71,7 @@ function BaseModal({ ComposerFocusManager.setReadyToFocus(); } }, - // eslint-disable-next-line react-hooks/exhaustive-deps -- adding onModalHide to the dependency array causes too many unnecessary rerenders - [shouldSetModalVisibility], + [shouldSetModalVisibility, onModalHide, fullscreen], ); useEffect(() => { @@ -80,8 +79,10 @@ function BaseModal({ // To handle closing any modal already visible when this modal is mounted, i.e. PopoverReportActionContextMenu Modal.setCloseModal(isVisible ? onClose : null); + }, [isVisible, onClose]); - return () => { + useEffect( + () => () => { // Only trigger onClose and setModalVisibility if the modal is unmounting while visible. if (isVisible) { hideModal(true); @@ -90,8 +91,10 @@ function BaseModal({ // To prevent closing any modal already unmounted when this modal still remains as visible state Modal.setCloseModal(null); - }; - }, [hideModal, isVisible, onClose]); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [], + ); const handleShowModal = () => { if (shouldSetModalVisibility) {