November 15, 2020
React에서 Hook이 무엇인지와 기본 Hook인 useState와 useEffect에 대해 간단하게 정리해보았다. 리액트 공식 문서의 내용을 주로 참고했다.
함수 컴포넌트에서 React state와 생명주기 기능을 연동할 수 있게 해주는 함수
이전의 함수형 컴포넌트에서는 state가 없었지만, useState를 사용함으로써 함수형 컴포넌트에서 state를 사용할 수 있게 되었다. useState는 다음과 같이 사용한다.
import { useState } from 'react';
const UpdateCount = () => {
const [count, setCount] = useState(0);
return (
<div>
<p>{count}</p>
<button onClick={() => setCount(count + 1)}> + </button>
</div>
)
}
현재의 state 값(count)과 이 값을 업데이트하는 함수(setCount)를 함께 제공한다.
useState()안의 0을 count의 초기값으로 사용한다.
button을 클릭하면 setCount에 의해 state가 변해 count의 값이 업데이트된다.
this.setState와의 차이점은 이전 state와 새로운 state를 합치지 않는다는 점이다.
useEffect는 render 이후에 어떤 일을 수행할지를 정의한다. componentDidMount나 componentDidUpdate, componentWillUnmount와 같은 목적으로 사용한다. useEffect는 처음 렌더링과 이후의 모든 업데이트에서 수행된다.
import { useState, useEffect } from 'react';
const UpdateCount = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(`count is ${count}`);
});
return (
<div>
<p>{count}</p>
<button onClick={() => setCount(count + 1)}> + </button>
</div>
)
}
위 코드를 실행하면 초기에 count 값이 0일 때와 button을 클릭할 때 모두 console에 값이 출력된다.
Hook을 사용하는 이유와 useState, useEffect에 대해 찾아보면서 Hook을 쓰는 이유를 좀 더 명확하게 알고 사용할 수 있게 된 것 같다.