react의 컴포넌트들은 여러 interaction에 대해 동작을 감지하고 기억하며 적용하는 것이 필요하다. 입력을하고, 버튼을 클릭하며, 제출을 하는 등의 동작이다.
이러한 것들에대한 '기억'을 'State'라고 말한다.
React에서는 단순히 기억만을 고려하지 않는다. 사용자에게 보여지는 컴포넌트(UI)의 Render이 필요하다.
따라서 State와 Render을 연결하기위해 useState라는 훅을 제공한다.
리액트 컴포넌트의 Lifecyle은 총 3단계를 갖고있다.
이를 제어하기 위해
(현재 React에서는 함수형 컴포넌트 사용을 지향하기 때문에 이에 대해서만 다루도록 하겠다.)
Lifecycle을 제어하는 hook은 공식문서에서 Effect라고 불리는 useEffect이다. (참고:Effect 사용 관련 공식문서)
간단한 예제를 통해 위 3과정을 살펴보면 아래와 같다.
function ChatRoom({ roomId /* "general" */ }) {
useEffect(() => {
const connection = createConnection(serverUrl, roomId); // Connects to the "general" room
connection.connect();
return () => {
connection.disconnect(); // Disconnects from the "general" room
};
// ...
해당 컴포넌트에 대해 아래와 같은 동작이 일어난다면
ChatRoom의 Lifecycle
Lifecycle동안의 Effect