모든 컴포넌트는 여러 종류의 “생명주기 메서드”를 가지며, 이 메서드를 오버라이딩하여 특정 시점에 코드가 실행되도록 설정할 수 있습니다
constructor() => 컴포넌트가 마운트되기 전에 호출
render => 컴포넌트를 DOM에 마운트하기 위해 호출
componentDidMount => 컴포넌트가 마운트된 직후, 즉 트리에 삽입된 직후에 호출
render => 컴포넌트를 DOM에 마운트하기 위해 호출
componentDidUpdate => 갱신이 일어난 직후에 호출
componentWillUnmount()
React Hook은 간단히 말하면 함수형 component에서 클래스형 component의 기능을 구현한 개념이다.
state같은 경우는 클래스에서만 사용이 가능했는데 hook을 이용하면 함수형 component에서도 useState를 이용해서 상태 변수를 선언할 수 있다.
useEffect는 함수 컴포넌트 내에서 이런 side effects를 수행할 수 있게 해줍니다
componentDidMount 나 componentDidUpdate, componentWillUnmount와 같은 목적으로 제공되지만, 하나의 API로 통합된 것입니다
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
// componentDidMount, componentDidUpdate와 비슷합니다
useEffect(() => {
// 브라우저 API를 이용해 문서의 타이틀을 업데이트합니다
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
기본적으로 React는 매 렌더링 이후에 effects를 실행한다.
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // count가 바뀔 때만 effect를 재실행합니다.
상태 유지 값과 그 값을 갱신하는 함수를 반환합니다.
최초로 렌더링을 하는 동안, 반환된 state(state)는 첫 번째 전달된 인자(initialState)의 값과 같습니다.
setState 함수는 state를 갱신할 때 사용합니다. 새 state 값을 받아 컴포넌트 리렌더링을 큐에 등록합니다.
const [state, setState] = useState(initialState);
1. 최상위(at the top level)에서만 Hook을 호출해야 합니다. 반복문, 조건문, 중첩된 함수 내에서 Hook을 실행하지 마세요.
2.React 함수 컴포넌트 내에서만 Hook을 호출해야 합니다. 일반 JavaScript 함수에서는 Hook을 호출해서는 안 됩니다.