728x90
React에서 훅(Hooks)을 사용하는 기본적인 방법은 다음과 같다. 훅은 함수형 컴포넌트에서 상태와 생명주기 기능을 사용할 수 있게 해준다. 가장 기본적인 훅은 useState
와 useEffect
이다.
useState 훅
useState 훅을 사용하여 상태 관리하기
useState
훅을 사용하면 함수형 컴포넌트에서 상태를 관리할 수 있다. 다음 예시는 useState
훅을 사용하여 카운터를 구현한 것이다.
import React, { useState } from 'react';
const Counter = () => {
// useState 훅을 사용하여 count라는 상태 변수와 setCount라는 상태 업데이트 함수를 선언한다.
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
};
export default Counter;
설명
useState(0)
:useState
훅을 호출하여 초기값을 0으로 설정한다.count
는 현재 상태 값을 나타내고,setCount
는 상태 값을 업데이트하는 함수이다.<button onClick={() => setCount(count + 1)}>
: 버튼을 클릭할 때마다setCount
함수를 호출하여count
값을 1 증가시킨다.
useEffect 훅
useEffect 훅을 사용하여 부수 효과 처리하기
useEffect
훅을 사용하면 컴포넌트가 렌더링될 때마다 특정 작업을 수행할 수 있다. 다음 예시는 useEffect
훅을 사용하여 문서의 타이틀을 업데이트하는 것이다.
import React, { useState, useEffect } from 'react';
const Counter = () => {
const [count, setCount] = useState(0);
// useEffect 훅을 사용하여 count가 변경될 때마다 문서의 타이틀을 업데이트한다.
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // count가 변경될 때마다 useEffect 훅이 실행된다.
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
};
export default Counter;
설명
useEffect(() => { ... }, [count])
:useEffect
훅을 사용하여count
값이 변경될 때마다 특정 작업(여기서는 문서의 타이틀 업데이트)을 수행한다. 두 번째 인자로 전달된 배열([count]
)은 의존성 배열로, 이 배열에 포함된 값이 변경될 때마다useEffect
훅이 실행된다.document.title = 'You clicked ${count} times'
:count
값이 변경될 때마다 문서의 타이틀을 업데이트한다.
마무리
이 단계를 따라하면 React에서 기본적인 훅을 사용하여 상태를 관리하고 부수 효과를 처리할 수 있다. useState
훅과 useEffect
훅은 함수형 컴포넌트에서 가장 많이 사용되는 훅으로, 이를 통해 컴포넌트의 동작을 더욱 효율적으로 관리할 수 있다. 추가적으로, React의 공식 문서와 튜토리얼을 참고하여 더 많은 훅과 고급 사용법을 익힐 수 있다.
반응형
'웹 > 프론트엔드' 카테고리의 다른 글
Material-UI와 TypeScript로 React 프로젝트 세팅하기 (0) | 2024.07.11 |
---|---|
React로 상태 관리하기: Context API와 useState 비교 (0) | 2024.07.11 |
React + TypeScript 세팅하기 (0) | 2024.07.10 |
Next.js에 Tailwind CSS 세팅하기 (0) | 2024.07.10 |
Next.js 세팅하기 / 설치 하는 법 (0) | 2024.07.10 |