반응형

React-modal 사용하기

modal 컴포넌트를 만들기 위해 여러가지 찾아보았는데, react-modal을 사용하면

편리하다 하여 3편은 모달 만들기로 적어보겠다.

 

먼저, react-modal을 다운받아준다.

npm i react-modal

 

modal 폴더를 만들어주고 modal.js 파일을 생성한다.

상단에 추가해 주고,

import React from 'react';
import ReactModal from 'react-modal';

 

Modal 클래스를 생성해준다.

const Modal = () => {

  return (
    <ReactModal>
      <div>모달 입니다.</div>
    </ReactModal>
  );
};

export default Modal;

 

그리고 modal이 열릴 js 파일에 상단에 추가해주고,

import Modal from './Modal/Modal';

 

랜더링 될 곳에 useState와 modal을 가져온다.

const [isOpen, setOpen] = useState(false);
const handleClick = () => setOpen(true);
<button onClick={handleClick}>모달 열기</button>
<Modal isOpen={isOpen}/>

 

 

여기까지 왔으면 팝업이 열릴것이다.

 

 

※ 문제는 닫치지 않는다.

 

그래서, Modal.js에 버튼을 추가하여 상위 컴포넌트에서 가져온 props를 이용하여 함수를 사용하였고,

const Modal = ({isOpen}) => {

  return (
    <ReactModal isOpen={isOpen}>
      <button onClick={() => {isOpen(false)}}>X</button>
      <div>모달 입니다.</div>
    </ReactModal>
  );
};

 

상위 컴포넌트에도 Modal에 조건문을 추가하였다.

<button onClick={handleClick}>모달 열기</button>
<>
  {isOpen ? <Modal isOpen={setOpen} /> : null}
</>

 

 

이렇게 열렸다 닫치는 Modal 컴포넌트와 분리 성공~!

 

★ modal에 대해 수정하려면 ReactModal에 추가하여 css 수정

className="Modal" overlayClassName="Overlay"

★ 모달 열기 버튼이 아닌 진짜로 열려야 할 버튼에 추가하여 보자!!..

 

 

 

참고

https://nakta.dev/how-to-manage-modals-1

 

낙타의 블로그 :: 효율적인 modal 관리 with React(1)

중앙화된 모달 관리

nakta.dev

https://phrygia.github.io/react/2021-09-21-react-modal/

 

[react] 모달 팝업창 만들기 (react modal)

프로젝트를 진행할 때마다 모달창을 마주치는 일이 많다. 프론트엔드 프레임워크나 라이브러리를 사용하면 편리성이나 시간을 아낄 수 있기때문에 npm에 등록된 모듈을 사용하곤 했지만, 만들

phrygia.github.io

그 외 여러가지...

반응형

'독학코딩 > React' 카테고리의 다른 글

React - 기초②  (0) 2023.03.28
React - 기초①  (0) 2023.03.28

+ Recent posts