본문 바로가기
💻CODING/react. vue

[react] react 모달창(팝업창) 구현

by 코딩하는 갓디노 2021. 6. 12.

리액트 팝업창 띄우기

 

리액트 hooks로 
간단한 모달창을 구현합니다. 

 

구현내용

cdn 설치, 스타일은 기본만 사용
리액트 hooks 방식
버튼 클릭 후, 모달창 팝업 기능

 

구현 화면

리액트 모달창 띄우기

 

리액트, 바벨 cdn 설치

  • 간단한 예제는 cdn을 이용하여, react와 babel을 설치합니다.
  • 구글에서 react cdn, bable cdn을 검색하여 페이지에서 cdn 코드 복사후, <head>태그 사이에 삽입합니다. 
<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

 

리액트 hooks 모달창, 팝업창 띄우기

html

<div id="root"></div>

 

css

body {
  padding: 50px;
}

.openBtn {
  background-color: #F9B514;
  padding: 5px 10px;
  border-radius: 4px;
  cursor: pointer;
}

.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal .bg {
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.6);
}

.modalBox {
  position: absolute;
  background-color: #fff;
  width: 400px;
  height: 170px;
  padding: 15px;
}

.modalBox .closeBtn {
  display: block;
  width: 80px;
  margin: 0 auto;
}

 

script

< script type = "text/babel" >
  const App = () => {
      const [modalOn, setModalOn] = React.useState(false);

      const onOpenModal = () => {
        setModalOn(!modalOn);
      }


      const Modal = () => {
        return ( <
          div className = "modal" >
          <
          div className = "bg" > < /div> <
          div className = "modalBox" >
          <
          p > Lorem ipsum, dolor sit amet consectetur adipisicing elit.Consectetur quam nobis quis corrupti amet maxime neque, optio, in illo, voluptatibus consequuntur!Rerum quo ea nulla qui, maxime consectetur magni soluta! < /p>  <
          button className = "closeBtn"
          onClick = {
            onOpenModal
          } > ✖ < /button>  <
          /div>  <
          /div>
        );
      };


      return ( <
        React.Fragment >
        <
        button className = "openBtn"
        onClick = {
          onOpenModal
        } > 모달창 open < /button>  {
          modalOn ? < Modal / > : ''
        } <
        /React.Fragment>
      )
    } <
    /script> <
    script type = "text/babel" >
    ReactDOM.render( < App / > , document.querySelector('#root')); <
/script>

 

화면 보기(Result 클릭)

반응형

댓글