3줄 요약
- Element - React에서 가장 작은 UI 단위이며, 객체라고 생각하면 된다.
- Component - 여러 개의 Element를 조합하여 하나의 UI 단위를 만든다. Element를 반환하는 역할을 한다.
- Props - Component에 데이터를 전달하는 읽기 전용 값이다.
Tip: 객체라고 생각하면 편하다.
const element = <h1>Hello, world!</h1>;위 코드는 React 내부에서 다음과 같은 객체로 변환된다.const element = {
type: 'h1',
props: {
children: 'Hello, world!'
}
};Tip: 객체(Element)를 만들어내는 역할을 한다.
function Greeting() {
return <h1>Hello, world!</h1>;
}Greeting()을 호출하면 Element를 반환한다.Tip: 단순하게 전달하는 데이터라고 생각하면 된다.
function Greeting(props) {
return <h1>Hello, {props.name}!</h1>;
}
const element = <Greeting name="Alice" />;Greeting 컴포넌트는 props.name 값을 받아서 동적으로 UI를 생성한다.요약하자면,
- 상위 컴포넌트가 Props(데이터)를 하위 컴포넌트에 전달한다.
- 하위 컴포넌트는 Props를 기반으로 Element(객체)를 생성한다.
- 생성된 Element(객체)는 React의 가상 DOM을 거쳐 실제 클라이언트 화면에 렌더링된다.
리액트 훅의 정의는 다음과 같다
: 함수형 컴포넌트에서 상태(state)와 생명주기(lifecycle) 기능을 사용할 수 있도록 하는 도구
리액트를 배워본 적 없는 백엔드 개발자 입장에서 이 정의를 읽으면 이게 뭔소린가 싶다.
단순히 말하자면
앞서 말했듯이 컴포넌트에는 [ 함수형, 클래스형 ] 이렇게 두 종류가 있다.
함수형 컴포넌트는 단순해서 쓰기 편한데, 클래스형에 비교해서 몇가지 빠진 기능이있다.
해당 기능을 채워주는 도구가 바로 Hook이다.
함수형 컴포넌트는 기본적으로 한 번 실행되고 나면 끝이다.
즉, 내부에서 어떤 값을 변경하더라도 컴포넌트가 다시 실행되면 원래 상태로 초기화된다.
하지만, 어떤 값을 유지하고 싶다면? 그때 필요한 것이 바로 State(상태) 관리이다.
React에서 컴포넌트는 생성 → 업데이트 → 소멸 과정을 거친다.
이 과정에서 특정 시점에 실행할 코드를 넣는 것이 생명주기 관리이다.
Hook은 함수형 컴포넌트에서 위의 두 기능을 사용할 수 있게 도와준다.