From 82dade1ee1a10668a7b6ca597a2261a14b792419 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Thu, 6 Feb 2020 08:53:37 +0800 Subject: [PATCH] tweak Modal --- resources/assets/src/components/Modal.tsx | 49 ++++++++----------- .../assets/tests/components/Modal.test.tsx | 6 +-- 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/resources/assets/src/components/Modal.tsx b/resources/assets/src/components/Modal.tsx index 89fa754e..7339ea1e 100644 --- a/resources/assets/src/components/Modal.tsx +++ b/resources/assets/src/components/Modal.tsx @@ -46,6 +46,23 @@ const Modal: React.FC = props => { const [validatorMessage, setValidatorMessage] = useState('') const ref = useRef(null) + const { show } = props + + useEffect(() => { + if (!show) { + return + } + + const onHidden = () => props.onClose?.() + + const el = $(ref.current!) + el.on('hidden.bs.modal', onHidden) + + return () => { + el.off('hidden.bs.modal', onHidden) + } + }, [show, props.onClose]) + const handleInputChange = (event: React.ChangeEvent) => { setValue(event.target.value) } @@ -82,39 +99,17 @@ const Modal: React.FC = props => { } useEffect(() => { - if (!props.show) { - return - } - - const onHidden = () => props.onClose?.() - - const el = $(ref.current!) - el.on('hidden.bs.modal', onHidden) - - return () => { - el.off('hidden.bs.modal', onHidden) - } - }, [props.onClose, props.show]) - - useEffect(() => { - if (props.show) { + if (show) { setTimeout(() => $(ref.current!).modal('show'), 50) } - }, [props.show]) + }, [show]) - if (!props.show) { + if (!show) { return null } return ( -