[React] Modal 사용하여 팝업창 만들기

2024. 5. 15. 16:15·React
목차
  1. 설치하기
  2. import하기
  3. useState 셋팅해주기
  4. react-modal의 기능
  5. 팝업창 커스텀하기
  6. 결과물
  7. 👇🏻 참고
728x90
반응형

설치하기

npm install react-modal

위와 같이 설치했는데 오류가 걸리는 경우가 존재한다. 내가 그랬기 때문이다.

npm i --save-dev @types/react-modal

타입 정의 라이브러리를 사용하면 오류가 나지 않는다.

import하기

import Modal from 'react-modal';

import를 해주고 modal을 사용해주면 된다.

반응형

useState 셋팅해주기

나의 경우에 button을 클릭했을 때 modal을 보여주게 하고 싶기에 변수를 button과 modal을 연결해놓으면 된다.

import React, { useState } from 'react';
import Modal from 'react-modal';

function App() {
  const [modalIsOpen, setModalIsOpen] = useState(false);
  return (
    <>
      <button onClick={()=> setModalIsOpen(true)}>모달열기</button>
      <Modal isOpen={true} style={customModalStyles}>
        모달안의 내용
        <button onClick={()=> setModalIsOpen(false)}>모달닫기</button>
      </Modal>
    </>
  )
}

react-modal의 기능

이름  기능
isOpen 모달 창이 표시되어야 하는지 여부를 설명하는 boolean 값이다.즉, 해당 값이 true여야 모달 창이 열리는 것이다.
onRequestClose 모달이 닫힐 때 실행될 함수를 의미한다.즉,사용자가 모달을 닫으려고 할 때 실행되는 함수이다.
style 모달 창과 모달 창 바깥에 대한 style을 지정해준다.
ariaHideApp appElement를 숨길지 여부를 나타내는 boolean 값입니다.이 값이 true이면 appElement가 숨겨준다.
contentLabel 스크린리더 사용자에게 콘텐츠를 전달할 때사용되는 방법을 나타내는 문자열이다.
shouldCloseOnOverlayClick 팝업창이 아닌 바깥 부분에서 클릭하였을 때,닫히도록 할 것인지에 대한 처리이다. 기본값으로는 true를 가지고 있다.

팝업창 커스텀하기

const customModalStyles: ReactModal.Styles = {
  overlay: {
    backgroundColor: " rgba(0, 0, 0, 0.4)",
    width: "100%",
    height: "100vh",
    zIndex: "10",
    position: "fixed",
    top: "0",
    left: "0",
  },
  content: {
    width: "360px",
    height: "180px",
    zIndex: "150",
    position: "absolute",
    top: "50%",
    left: "50%",
    transform: "translate(-50%, -50%)",
    borderRadius: "10px",
    boxShadow: "2px 2px 2px rgba(0, 0, 0, 0.25)",
    backgroundColor: "white",
    justifyContent: "center",
    overflow: "auto",
  },
};
  • overlay : 팝업창 바깥 부분 css
  • content : 팝업창의 css

이렇게 css를 설정하고 나서 form으로 하여 팝업창을 꾸몄다. 이는 antd라고 치면 관련 코드가 많이 나오니 따로 사이트를 남겨놓도록 하겠다.

Form - Ant Design

 

Form - Ant Design

An enterprise-class UI design language and React UI library with a set of high-quality React components, one of best React UI library for enterprises

ant.design

결과물

결과물
결과물

위와 같이 다 따라 하면 위와 같은 결과물이 나온다.

👇🏻 참고

https://velog.io/@jaeochoiii/React-Modal-사용하여-팝업창-띄우기

https://velog.io/@mingle_1017/React-모달-창-구현해보기라이브러리-react-modal

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 설치하기
  2. import하기
  3. useState 셋팅해주기
  4. react-modal의 기능
  5. 팝업창 커스텀하기
  6. 결과물
  7. 👇🏻 참고
'React' 카테고리의 다른 글
  • [React] react-hot-toast로 toast 띄우기
  • [React] Global Style 적용하기
  • [React] react-calendar 적용하기
  • [React] 다크모드 구현하기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • 티스토리챌린지
  • Kubernetes
  • 넥스트
  • Django
  • 도커
  • Create
  • next.js
  • 오블완
  • Express
  • 노드
  • SSR
  • useEffect
  • MySQL
  • sequelize
  • flutter
  • Props
  • NEXT
  • 장고
  • mosquitto
  • AWS
  • React
  • node.js
  • supabase
  • 쿠버네티스
  • error
  • Vue.js
  • 리액트
  • docker
  • firebase
  • 플러터

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[React] Modal 사용하여 팝업창 만들기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.