React에서 팝업 모달을 만드는 방법
                                            
                                                
                                                
                                                
                                                
                                                
                                                 26715 단어  beginnersjavascriptreacttutorial
                    
모달이란 무엇입니까?
모달은 특정 작업에 집중할 수 있도록 모든 기능을 차단하여 페이지에 나타나는 상자입니다. 이것은 차별화 기능이며 사용자에게 작업을 수행하도록 요청합니다.
기본 콘텐츠로 돌아가려면 사용자는 작업을 완료하거나 닫아 모달에 참여해야 합니다.
React로 모달을 만들어 봅시다
GitHub의 코드: https://github.com/nicvazquez/react-modal
데모: https://react-modal-nicvazquez.vercel.app/
1단계: 앱 만들기
다음 명령을 사용하여 Vite로 React 앱을 만들어 보겠습니다.
npm create vite@latest
그런 다음 몇 가지 옵션을 완료하라는 메시지가 표시됩니다.
√ Project name: ... react-modal
√ Select a framework: » react
√ Select a variant: » react
훌륭한! 이제 다음 명령을 실행합니다.
cd react-modal
npm install
npm run dev
모든 것이 잘 되었다면 종속성이 설치된 애플리케이션을 생성하고 프로젝트를 로컬 서버에서 실행해야 합니다. 제 경우에는 http://127.0.0.1:5173/ 입니다.

2단계: 애플리케이션의 기반을 만들어 봅시다.
코드는 다음과 같아야 합니다.
import "./App.css";
function App() {
    return (
        <div className="container">
            <button>Open Modal</button>
        </div>
    );
}
export default App;
.container {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100vh;
}
:root {
    font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
    color-scheme: light dark;
    color: rgba(255, 255, 255, 0.87);
    background-color: #242424;
}
button {
    border-radius: 8px;
    border: 1px solid transparent;
    padding: 0.6em 1.2em;
    font-size: 1em;
    font-weight: 500;
    font-family: inherit;
    background-color: #1a1a1a;
    cursor: pointer;
    transition: border-color 0.25s;
}
button:hover {
    border-color: #646cff;
}
button:focus,
button:focus-visible {
    outline: 4px auto -webkit-focus-ring-color;
}
@media (prefers-color-scheme: light) {
    button {
        background-color: #f9f9f9;
    }
}
로컬 서버로 이동하면 다음이 있어야 합니다.

3단계: 모달 만들기
src 폴더에서 components 폴더를 만들고 그 안에 Modal 및 Modal.jsx 파일을 포함해야 하는 modal.module.css라는 또 다른 폴더를 만들어야 합니다. 우리 프로젝트의 구조는 다음과 같아야 합니다.
REACT-MODAL
└─── node_modules
└─── public    
│
└─── src
│   │
│   └─── assets
│   |       react.svg
│   └─── components \ Modal
│   |        Modal.jsx
│   |        modal.module.css
|   |   App.css
|   |   App.jsx
|   |   index.css
|   |   main.jsx
│   
|   .gitignore
|   index.html
|   package-lock.json
|   package.json
|   vite.config.js
Modal.jsx에 HTML을 추가해야 합니다.import React from "react";
import styles from "./modal.module.css";
export const Modal = () => {
    return (
        <div className={styles.modalBack}>
            <div className={styles.modalContainer}>
                <div>
                    <h2>Modal</h2>
                    <p>
                        Lorem ipsum dolor sit amet consectetur adipisicing elit. Ex, nisi. Dolorem est
                        esse iste perferendis.
                    </p>
                </div>
                <button className={styles.modal__closeBtn}>Close</button>
            </div>
        </div>
    );
};
modal.module.css에 이 코드가 있어야 합니다..modalBack {
    position: absolute;
    height: 100vh;
    width: 100%;
    display: grid;
    place-items: center;
    background-color: rgba(0, 0, 0, 0.322);
}
.modalContainer {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    height: 30%;
    max-width: 60%;
    background-color: rgb(39, 43, 114);
    padding: 3rem;
    border-radius: 5px;
}
import "./App.css";
import { Modal } from "./components/Modal/Modal";
function App() {
    return (
        <div className="container">
            <button>Open Modal</button>
            <Modal />
        </div>
    );
}
export default App;
모달은 다음과 같아야 합니다.

지금까지는 좋았지만 한 가지 빠진 것이 있습니다. 사용자가 버튼을 클릭하면 모달이 표시됩니다.
시작하자!
4단계: 모달을 열 수 있음
useState:import { useState } from "react";
false으로 선언해 보겠습니다.const [showModal, setShowModal] = useState(false)
<button onClick={() => setShowModal(true)}>Open Modal</button>
{showModal && <Modal />}
import { useState } from "react";
import "./App.css";
import { Modal } from "./components/Modal/Modal";
function App() {
    const [showModal, setShowModal] = useState(false);
    return (
        <div className="container">
            <button onClick={() => setShowModal(true)}>Open Modal</button>
            {showModal && <Modal />}
        </div>
    );
}
export default App;
이제 버튼을 클릭하면 모달이 나타납니다. 우리는 잘하고 있지만 여전히 모달을 닫아야 합니다.
5단계: 모달을 닫을 수 있음
export const Modal = ({ closeModal }) => {
<button onClick={closeModal} className={styles.modal__closeBtn}>
    Close Modal
</button>
<div onClick={closeModal} className={styles.modalBack}>
Modal.jsx는 다음과 같아야 합니다.import React from "react";
import styles from "./modal.module.css";
export const Modal = ({ closeModal }) => {
    return (
        <div onClick={closeModal} className={styles.modalBack}>
            <div className={styles.modalContainer}>
                <div>
                    <h2>Modal</h2>
                    <p>
                        Lorem ipsum dolor sit amet consectetur adipisicing elit. Ex, nisi. Dolorem est
                        esse iste perferendis.
                    </p>
                </div>
                <button onClick={closeModal} className={styles.modal__closeBtn}>
                    Close Modal
                </button>
            </div>
        </div>
    );
};
{showModal && <Modal closeModal={() => setShowModal(false)} />}
App.jsx는 최종적으로 다음과 같아야 합니다.import { useEffect, useState } from "react";
import "./App.css";
import { Modal } from "./components/Modal/Modal";
function App() {
    const [showModal, setShowModal] = useState(false);
    return (
        <div className="container">
            <button onClick={() => setShowModal(true)}>Open Modal</button>
            {showModal && <Modal closeModal={() => setShowModal(false)} />}
        </div>
    );
}
export default App;
완료! :-)
그거였다! 이 포스팅이 많은 도움이 되셨기를 바랍니다. 질문이나 제안은 댓글에 남겨주세요.
GitHub에서 코드를 볼 수 있습니다: https://github.com/nicvazquez/react-modal
데모: https://react-modal-nicvazquez.vercel.app/
Reference
이 문제에 관하여(React에서 팝업 모달을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nicvazquez/how-to-create-a-pop-up-modal-in-react-j3f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)