# 리액트 모달창 구현 방법- redux나 별도 라이브러리 없이 아주 쉽게 모달창을 구현하는 방법 1. state 로 Modal 노출 여부를 관리한다. - useState 훅으로 모달창 노출 여부를 관리해준다. 2. Modal 창이 최상위에 노출되도록 CSS를 조정한다. - position: absolute로 위치를 조정한다. - z-index를 높게 줘서 최상위에 노출 시킨다. 3. (옵션) 모달창 외부 클릭시, 모달창 제거 처리해준다. - 모달창 외부 document 클릭 이벤트를 달아준다. 1. state 로 Modal 노출 여부를 관리한다. - button을 클릭하면, setModalOpen(true)를 호출한다. - modalOpen이 true가 되면, <ModalBasic /> 컴포넌트가 노출된다. - <ModalBasic /> 컴포넌트 내부에 X버튼 클릭시, 모달 제거를 위해 setModalOpen을 props 로 전달한다. < 모달을 노출시키는 페이지 컴포넌트 >
< 모달창 컴포넌트 >
(참고) CSS Module 방식을 사용했다. 2. Modal 창이 최상위에 노출되도록 CSS를 조정한다. - <ModalBasic> 컴포넌트의 CSS를 조정하여, 최상위에 노출되도록 한다.
여기까지만 해도, 버튼을 누르면 모달창을 띄우고, X버튼을 누르면 제거하는 기본 모달 기능은 구현된다. 3. 모달 외부 클릭시, 제거 처리 - document 에 mousedown 이벤트핸들러를 등록하고, - 모달창 영역이 아닐 경우에만, modalOpen 상태를 false로 전환해준다.
위 3번 코드에서 useEffect 훅을 사용하는 부분은 커스텀훅으로 분리하면, 코드가 더 간결해지고 가독성이 좋아질 것이다. 자바스크립트를 이용하여 요즘에는 제이쿼리를 사용하지 않고, 모달창 띄우기 구현내용 · 버튼 클릭시 모달창 open
모달창(팝업창, 다이얼로그)창 띄우기 예제html, javascript
css
한 번에 보기(Result 클릭) |