🐨CoalaCoding
DocsExamplesTry itBoardB반
🐨CoalaCoding

개발자를 위한 한국어 웹 기술 문서

문서

  • JavaScript
  • Web Publishing
  • React
  • Python

커뮤니티

  • 게시판
  • 예제 모음
  • Try it 에디터

기타

  • GitHub
  • 관리자
© 2026 CoalaCoding. All rights reserved.
  • 01_hook
  • 02_시작
  • 03_react-vite-설치
  • 04_노코드리액트
  • 05_csrssrreact-렌더링-참조글
  • 06_컴포넌트
  • 07_시작하기
  • 08_2-scaffolding-react-project
  • 09_props
  • 10_3-웹문서-작성하기
  • 11_컴포넌트
  • 12_map과컴포넌트
  • 13_event
  • 14_4-리액트로-변경하기
  • 15_컴포넌트-데이터관리
  • 16_composition
  • 17_앱제작-준비
  • 21_환경설정
  • 24_컴포넌트-전략
  • 25_리액트-네이버-로그인
  • 26_리액트교안
  • 0_React 학습 전 필수 JavaScript 문법
  • 1_React 개발 환경 이해
  • 2_React 소스 코드 수정, 배포 및 렌더링
  • 3_JSX 문법과 컴포넌트
  • 4_Props (속성)
  • 5_이벤트 처리
  • 6_Hook
  • 7_useContext로 전역 상태 관리
  • 8. React Router
  • 9_CSS 리액트에 넣는 5가지 방법
  1. 홈
  2. 문서
  3. React
  4. React 기초
  5. 5_이벤트 처리

5_이벤트 처리

코드 블록의 Try it Yourself 버튼으로 직접 실행할 수 있다.

구문

1. 이벤트 처리

사용자의 행동(클릭, 입력, 마우스 이동 등)에 반응하는 인터랙티브한 웹사이트를 만들기 위해 React의 이벤트 시스템을 깊이 있게 학습한다.

1.1. React 이벤트 시스템 이해하기

1.1.1. 이벤트란?

**이벤트(Event)**는 사용자가 웹페이지에서 취하는 행동을 의미한다. 버튼 클릭, 키보드 입력, 마우스 이동 등 모든 상호작용이 이벤트다.

💡TIP

일상 생활의 비유:

• 도어벨을 누르면(이벤트) → 초인종이 울린다(반응) • 리모컨 버튼을 누르면(이벤트) → TV 채널이 바뀐다(반응) • 웹페이지에서 버튼을 클릭하면(이벤트) → 무언가 실행된다(반응)

React에서는 이런 "반응"을 **이벤트 핸들러(Event Handler)**라는 함수로 정의한다.

1.1.2. HTML vs React 이벤트 비교

구분HTMLReact
이벤트명소문자 onclick카멜케이스 onClick
핸들러문자열 "handleClick()"함수 {handleClick}
기본 동작 방지return falsee.preventDefault()
// HTML 방식
<button onclick="handleClick()">클릭</button>

// React 방식
<button onClick={handleClick}>클릭</button>
⚠️WARNING

⚠️ 가장 흔한 실수!

onClick={handleClick()} ❌ 잘못됨! onClick={handleClick} ✅ 올바름!

이유: 괄호를 붙이면 함수가 즉시 실행된다.

function Button() {
  const handleClick = () => {
    console.log("클릭됨");
  };

  return (
    <div>
      {/* ❌ 렌더링 시 즉시 실행 */}
      <button onClick={handleClick()}>잘못된 예</button>

      {/* ✅ 클릭 시에만 실행 */}
      <button onClick={handleClick}>올바른 예</button>
    </div>
  );
}

1.2. 클릭 이벤트

1.2.1. 기본 클릭 이벤트

function ClickExample() {
  const handleClick = () => {
    alert("클릭됨");
  };

  return (
    <div>
      <button onClick={handleClick}>버튼 1</button>
      <button onClick={() => alert("버튼 2")}>버튼 2</button>
    </div>
  );
}

1.2.2. 인자가 있는 함수 호출

function ButtonList() {
  const handleClick = (name) => {
    alert(`${name} 클릭됨`);
  };

  return (
    <div>
      {/* ✅ 올바름: 화살표 함수로 감싸기 */}
      <button onClick={() => handleClick("빨강")}>빨강</button>
      <button onClick={() => handleClick("파랑")}>파랑</button>
    </div>
  );
}

1.3. 폼 이벤트

1.3.1. onChange 이벤트

function InputExample() {
  const handleChange = (e) => {
    console.log("입력값:", e.target.value);
  };

  return (
    <div>
      <input
        type="text"
        onChange={handleChange}
        placeholder="입력하세요"
      />
    </div>
  );
}

1.3.2. onSubmit 이벤트

function FormExample() {
  const handleSubmit = (e) => {
    e.preventDefault(); // 페이지 새로고침 방지
    alert("제출됨");
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" name="username" placeholder="이름" />
      <button type="submit">제출</button>
    </form>
  );
}

목차

  • 구문