컴포넌트는 React 애플리케이션을 구성하는 기본 단위이다. 이들은 UI의 독립적인, 재사용 가능한 부분으로 간주되며, 각 컴포넌트는 자체적인 구조, 동작, 스타일을 가진다. React에서 컴포넌트는 크게 두 종류로 나뉜다: 함수형 컴포넌트와 클래스형 컴포넌트
간단한 'Hello, World!' 메시지를 출력하는 함수형 컴포넌트의 예시를 살펴보자:
import React from 'react';
function HelloWorld() {
return <h1>Hello, World!</h1>;
}
이 컴포넌트는 HelloWorld라는 함수로 정의되며, JSX를 사용하여 <h1> 태그 안에 'Hello, World!' 텍스트를 렌더링한다.
컴포넌트의 심화 사용은 다음과 같은 개념을 포함한다:
1. 컴포넌트 생명주기: 클래스형 컴포넌트에서 중요한 역할을 한다. componentDidMount, componentDidUpdate, componentWillUnmount 등의 메소드를 통해 컴포넌트의 생명주기에 따른 동작을 정의할 수 있다.
2. 컴포넌트 상태 관리: Hooks(useState, useEffect 등)를 사용하여 함수형 컴포넌트에서 상태 관리를 할 수 있다.
3. 컴포넌트 간 데이터 전달: Props를 통해 부모 컴포넌트로부터 데이터를 자식 컴포넌트로 전달할 수 있다. Context API를 사용하여 깊은 컴포넌트 트리에 데이터를 전달하는 것도 가능하다.
useState, useEffect, useContext, useReducer, useCallback, useMemo와 같은 Hooks를 사용하여 함수형 컴포넌트에서 복잡한 상태 관리와 부수 효과를 처리한다.import React, { useState } from 'react';
function TodoApp() {
const [tasks, setTasks] = useState([]);
const [newTask, setNewTask] = useState("");
const addTask = () => {
if (newTask) {
setTasks([...tasks, newTask]);
setNewTask("");
}
};
return (
<div>
<input
type="text"
value={newTask}
onChange={(e) => setNewTask(e.target.value)}
/>
<button onClick={addTask}>Add Task</button>
<ul>
{tasks.map((task, index) => (
<li key={index}>{task}</li>
))}
</ul>
</div>
);
}
이 예시는 사용자가 입력한 텍스트를 기반으로 할 일 목록을 관리하는 간단한 애플리케이션을 보여준다. useState를 사용하여 상태를 관리하고, 리스트에 새로운 항목을 추가하는 기능을 구현한다.
React의 컴포넌트는 애플리케이션의 구조와 기능을 정의하는 핵심 요소다. 이들을 효율적으로 사용하고 관리하는 것은 React 개발에서 매우 중요하다. 고급 기능과 최적화 전략을 통해 성능이 뛰어나고 유지 보수가 용이한 애플리케이션을 구축할 수 있다.