아래는 리액트(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