리액트 초기에는 클래스형 컴포넌트가 주로 사용됨. 클래스형 컴포넌트는 Component를 상속받아 만들어짐
예제 코드:
import { Component } from "react";
class App extends Component {
render() {
return <h1>App</h1>;
}
}
export default App;
함수형 컴포넌트는 함수의 형태로 작성됨. 최근에는 React의 주요 작성 방식으로 자리잡음
예제 코드:
export default function App() {
return <h1>App</h1>;
}
componentDidMount, componentDidUpdate 등 여러 생명주기 메서드를 사용해야 하며, 이를 관리하기가 까다로움this를 명시적으로 바인딩하거나 bind를 사용해야 해서 추가적인 작업이 필요함Hooks 도입useState, useEffect 등의 훅을 통해 상태 관리와 생명주기 메서드를 간결하고 직관적으로 처리 가능JSX에서는 여러 요소를 반환할 때 반드시 하나의 최상위 태그가 필요함. 이때 React.Fragment를 사용하면 불필요한 DOM 요소를 생성하지 않고 요소를 그룹화할 수 있음
import React from "react";
return (
<React.Fragment>
<h1>제목</h1>
<p>내용</p>
</React.Fragment>
);
React에서는 단축 문법으로 빈 태그 <>를 사용 가능. 이는 React.Fragment의 축약형임
return (
<>
<h1>제목</h1>
<p>내용</p>
</>
);
주의사항:
React.Fragment는 DOM에 추가 요소를 생성하지 않음src 폴더 내부에서 작성해야 함리액트 프로젝트에서 가장 최상위 컴포넌트를 루트 컴포넌트라고 하며, 일반적으로 App 컴포넌트가 루트 컴포넌트의 역할을 수행
컴포넌트 트리와 DOM 트리