별 개수: 50
속도: 2

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

React/예제

모달 버튼 열고 닫기

lamarcK 2025. 4. 8. 01:00
javascript
클릭하여 코드 펼치기
// App.jsx
import React, { useState } from 'react';
import './App.css';
import Modal from './Modal';

function App() {
  const [showModal, setShowModal] = useState(false);

  return (
    <div className="app">
      <h1>모달 테스트</h1>
      <button onClick={() => setShowModal(true)}>
        모달 열기
      </button>

      {showModal && (
        <Modal onClose={() => setShowModal(false)} />
      )}
    </div>
  );
}

export default App;
클릭하여 코드 복사
css
클릭하여 코드 펼치기
/* App.css */
.app {
  padding: 20px;
  text-align: center;
}

button {
  padding: 10px 20px;
  font-size: 16px;
  cursor: pointer;
}
클릭하여 코드 복사
javascript
클릭하여 코드 펼치기
// Modal.jsx
import React, { useEffect } from 'react';
import './Modal.css';

function Modal({ onClose }) {
  useEffect(() => {
    console.log("🎉 모달이 나타났습니다! (마운트)");

    // cleanup 함수
    return () => {
      console.log("👋 모달이 사라집니다! (언마운트)");
    };
  }, []);

  return (
    <div className="modal-backdrop">
      <div className="modal-content">
        <h2>안녕하세요!</h2>
        <p>이것은 모달입니다.</p>
        <button onClick={onClose}>닫기</button>
      </div>
    </div>
  );
}

export default Modal;
클릭하여 코드 복사
css
클릭하여 코드 펼치기
  /* Modal.css */
  .modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
  }
  
  .modal-content {
    background-color: white;
    padding: 20px;
    border-radius: 8px;
    width: 300px;
  }
클릭하여 코드 복사
javascript
클릭하여 코드 펼치기
// main.jsx
import { createRoot } from 'react-dom/client'
import Components from './App.jsx';

createRoot(document.getElementById('root')).render(
  <Components />
)
클릭하여 코드 복사

이동