리액트 (React)

화낼거양's avatar
Aug 01, 2025
리액트 (React)
 
💡
아래는 리액트(React)에 대해 Ai에게 질문한 내용들을 모아 놓은 내용입니다.
 
 
리액트(React)는 사용자 인터페이스(UI)를 만들기 위한 자바스크립트 라이브러리예요. 페이스북에서 개발했고, 지금은 전 세계적으로 가장 인기 있는 프론트엔드 기술 중 하나죠! 🚀

🧠 리액트의 핵심 개념

  • 컴포넌트 기반 UI를 작은 단위인 컴포넌트로 나눠서 개발합니다. 각 컴포넌트는 독립적으로 동작하고 재사용이 가능해요.
  • 선언형 프로그래밍 "어떻게"가 아니라 "무엇을" 보여줄지를 선언합니다. 상태(state)가 바뀌면 자동으로 UI가 갱신돼요.
  • Virtual DOM 실제 DOM 대신 가상의 DOM에서 변경 사항을 계산하고, 효율적으로 실제 DOM에 반영합니다.

🛠️ 리액트로 할 수 있는 것들

기능
설명
SPA 개발
페이지 전체를 새로고침하지 않고도 동작하는 웹앱 개발
상태 관리
컴포넌트 내부 또는 외부에서 상태를 관리 (예: Redux, Context API)
라우팅
여러 페이지처럼 보이게 만들기 (React Router 사용)
모바일 앱
React Native를 사용하면 iOS/Android 앱도 개발 가능

✨ 간단한 예제

 
function Welcome(props) { return <h1>안녕하세요, {props.name}님!</h1>; } <Welcome name="화낼거양" />
 
이렇게 Welcome이라는 컴포넌트를 만들고, name이라는 데이터를 전달하면 화면에 인사말이 표시돼요.
 
 

리액트가 등장한 이유

 
리액트(React)가 등장한 배경은 웹 개발의 복잡성과 비효율을 해결하기 위한 페이스북의 내부 필요에서 시작됐어요. 당시 웹 애플리케이션은 점점 더 동적이고 복잡해지면서, 기존 방식으로는 유지보수와 성능 관리가 어려워졌죠. 🔧

🚨 기존 웹 개발의 문제점

  • 전체 페이지 새로고침 방식 사용자 인터랙션이 있을 때마다 HTML, CSS, JS를 서버에서 다시 받아야 했어요. 느리고 비효율적이었죠.
  • 복잡한 상태 관리 UI가 사용자 행동에 따라 바뀌어야 하는데, 이를 직접 DOM으로 조작하려면 코드가 복잡해지고 오류도 많았어요.
  • 중복된 UI 코드 비슷한 UI를 여러 번 작성해야 했고, 재사용이 어려웠어요.

💡 리액트의 등장 이유

  • SPA(Single Page Application)의 필요 한 번만 리소스를 로드하고, 이후에는 필요한 부분만 동적으로 바꾸는 방식이 필요했어요.
  • 컴포넌트 기반 개발 UI를 작은 단위로 나누고 재사용할 수 있게 하여 유지보수를 쉽게 만들었어요.
  • Virtual DOM 도입 실제 DOM을 직접 조작하지 않고, 가상의 DOM에서 변경 사항을 계산해 효율적으로 반영함으로써 성능을 개선했어요.
  • 선언형 프로그래밍 “어떻게”가 아니라 “무엇”을 보여줄지를 선언함으로써 코드의 예측 가능성과 디버깅 편의성을 높였어요.
 

⚛️ 리액트만의 특징

특징
설명
컴포넌트 기반
UI를 독립적인 컴포넌트로 나눠서 재사용성과 유지보수성 향상
JSX 문법
HTML과 자바스크립트를 결합한 문법으로 직관적인 UI 작성 가능
Virtual DOM
실제 DOM 대신 가상의 DOM에서 변경 사항을 계산해 성능 최적화
단방향 데이터 흐름
부모 → 자식 방향으로 데이터 전달, 예측 가능한 상태 관리
선언형 프로그래밍
UI의 상태를 선언적으로 기술하여 코드 가독성과 유지보수 향상
풍부한 생태계
Redux, React Router, Next.js 등 다양한 라이브러리와 도구 지원
 
 

리액트에서 자주 사용되는 기본 문법

 
리액트에서 자주 사용되는 문법은 리액트의 핵심 개념과 함께 UI를 효율적으로 구성하고 관리하기 위해 꼭 알아야 할 요소들이에요. 아래에 대표적인 문법들을 정리해볼게요! 🎯

⚛️ JSX (JavaScript XML)

  • HTML과 유사한 문법을 자바스크립트 안에서 사용
  • 중괄호 {}를 사용해 자바스크립트 표현식 삽입 가능
  • 여러 요소는 반드시 하나의 부모 요소로 감싸야 함 (<div> 또는 <>...</> 사용)
 
const element = <h1>안녕하세요, 리액트!</h1>;
 

🧱 컴포넌트(Component)

  • UI를 구성하는 독립적인 블록
  • 함수형 컴포넌트가 일반적
 
function Welcome(props) { return <h1>안녕, {props.name}!</h1>; }

📦 Props (속성)

  • 부모 컴포넌트가 자식 컴포넌트에 전달하는 데이터
  • 읽기 전용
 
<Welcome name="화낼거양" />

🔄 State (상태)

  • 컴포넌트 내부에서 관리되는 동적인 데이터
  • useState 훅으로 사용
 
import { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( <button onClick={() => setCount(count + 1)}> 클릭 횟수: {count} </button> ); }

🪝 Hooks

  • 함수형 컴포넌트에서 상태 관리와 생명주기 기능을 사용할 수 있게 해주는 함수들
설명
useState
상태 관리
useEffect
컴포넌트 생명주기 처리
useRef
DOM 참조 또는 값 유지
useContext
전역 상태 공유

🎯 이벤트 처리

  • JSX에서 이벤트는 소문자 대신 카멜케이스로 작성
  • 함수 참조를 전달해야 함
 
<button onClick={handleClick}>클릭</button>

🧩 조건부 렌더링

 
{isLoggedIn ? <Logout /> : <Login />}

🧹 리스트 렌더링

 
const items = ['사과', '바나나', '포도']; const list = items.map((item, index) => <li key={index}>{item}</li>);
 
이 외에도 React Router, Redux, styled-components 같은 라이브러리와 함께 쓰이는 문법들도 많아요. Todo 앱이나 간단한 게시판 같은 걸 같이 만들어볼 수도 있어요! 😄
 
Share article

moohyun