리액트로 모달창 만들기
- 구현할 목록
✔️ 첫 화면에서 모달창 나오게 하기
✔️ 닫기 버튼 클릭 시 모달창 닫기
✔️ 버튼 클릭 시 모달창 나오게 하기
App.js
import { useState } from "react";
import Modal from "./components/modal/Modal";
function App() {
  const [modal, setModal] = useState(true);
  function modalClose() {
    setModal(false);
  }
  return (
    <div>
      {modal && <Modal modalClose={modalClose} />}
    </div>
  );
}
export default App;Modal.jsx
import "./Modal.css";
export default function Modal({ modalClose }) {
  return (
    <div className="modal-backdrop">
      <article className="modal">
        <h2>Notice</h2>
        <p>새로운 공지사항이 있습니다.</p>
        <button onClick={modalClose}>닫기</button>
      </article>
    </div>
  );
}Modal.css
/* 모달창 뒷 배경 */
.modal-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.4);
}
.modal {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 300px;
  background: #ffffff;
  padding: 15px;
  border-radius: 15px;
  -webkit-border-radius: 15px;
  -moz-border-radius: 15px;
  -ms-border-radius: 15px;
  -o-border-radius: 15px;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -moz-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  -o-transform: translate(-50%, -50%);
}
App.js
import { useState } from "react";
import Modal from "./components/modal/Modal";
function App() {
  const [modal, setModal] = useState(true);
  // 모달 열기
  function modalOpen() {
    setModal(true);
  }
  // 모달 닫기
  function modalClose() {
    setModal(false);
  }
  return (
    <div>
      // 모달창 나오게 하는 버튼
      <button onClick={modalOpen}>모달 버튼</button>
    </div>
  );
}
export default App;App.js에 버튼과 누르면 모달이 실행되도록 하는 modalOpen 함수만 추가해주면 됩니다.