728x90
728x90
훅(Hook)
들어가며
- 리액트(React)에서 사용되는 기본적인 훅(Hook)들에 대해 알아보자.

훅(Hook)
개념
- 함수 컴포넌트에서 상태(State)나 생명주기 기능 등을 사용할 수 있도록 도와주는 기능
- 클래스 컴포넌트의 기능을 함수 컴포넌트에서도 사용할 수 있게 해준다.
- 가장 널리 사용되는 훅으로는
useState
,useEffect
,useContext
등이 있다.
- 각각의 훅을 활용하면 함수 컴포넌트에서 상태 관리, 부수 효과 처리, 전역적인 데이터 공유 등을 편리하게 할 수 있다.
- 이 외에도 많은 다양한 훅이 있으며, 직접 커스텀 훅을 만들어 사용할 수도 있다.
- 훅을 사용하면 함수 컴포넌트에서 상태를 관리하고, 생명주기 메서드를 이용할 수 있어 훨씬 간결하고 유연한 코드를 작성할 수 있게 된다.
종류
① useState
- 함수 컴포넌트에서 상태(State)를 관리할 수 있도록 도와준다.
- 이 훅을 사용하면 상태를 선언하고 업데이트할 수 있다.
예제 코드 : 버튼 클릭 시, 숫자 값 1씩 증가
import React, { useState } from 'react'; function Counter() { // count 상태와 이를 업데이트하는 setCount 함수를 선언 const [count, setCount] = useState(0); // 초기값 : 0 return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increase</button> </div> ); }
useState
훅을 사용하여count
라는 상태와 이를 업데이트하는setCount
함수를 선언한다.count
상태는 초기값으로0
을 가진다.- 버튼을 클릭할 때마다
setCount
를 통해count
값을 증가시킨다.
② useEffect
- 부수 효과(Side Effects)를 다루는 데 사용된다.
- 컴포넌트가 렌더링될 때와 업데이트될 때 특정 작업을 수행하는 데 사용된다.
- API 호출, 이벤트 구독 등에 사용된다.
예제 코드 : API 호출
import React, { useState, useEffect } from 'react'; function DataFetcher() { const [data, setData] = useState(null); useEffect(() => { // API 호출 등의 작업을 수행한다. fetch('https://api.example.com/data') .then(response => response.json()) .then(result => setData(result)) .catch(error => console.error(error)); }, []); // 빈 배열은 컴포넌트가 처음 렌더링될 때만 실행됨을 의미한다. return ( <div> {data ? ( <p>Data: {data}</p> ) : ( <p>Loading...</p> )} </div> ); }
useEffect
훅을 사용하여 컴포넌트가 렌더링될 때 API를 호출하고 데이터를 가져오는 작업을 수행한다.- 빈 배열
[]
을 전달하여 컴포넌트가 처음 렌더링될 때만useEffect
가 실행되도록 한다. - 데이터가 있으면 해당 데이터를 표시하고, 데이터가 없을 경우
Loading...
을 표시한다.
③ useContext
- 컴포넌트 트리 전체에서 전역적으로 데이터를 공유할 수 있도록 도와준다.
예제 코드 : 테마 변경
import React, { useContext } from 'react'; // Context 생성 const ThemeContext = React.createContext('light'); function ThemedComponent() { // Context를 사용하여 값을 가져옵니다. const theme = useContext(ThemeContext); return <p>Current Theme: {theme}</p>; } // 어떤 다른 곳에서 해당 Context의 값을 변경하고 싶을 때 function ThemeToggler() { const theme = useContext(ThemeContext); const toggleTheme = () => { // 테마 변경 로직 }; return ( <button onClick={toggleTheme}> Toggle Theme </button> ); }
createContext
를 사용하여 새로운Context
를 생성한다.useContext
훅을 사용하여 해당Context
의 값을 가져와 컴포넌트에서 사용한다.ThemeToggler
함수에는 버튼을 클릭하여 테마를 변경하는 로직을 넣을 수 있다.
참고 사이트
Built-in React Hooks – React
The library for web and native user interfaces
react.dev
728x90
728x90
'Programming > React' 카테고리의 다른 글
[React.js] 실시간으로 특정 요소의 길이값 가져오기 (0) | 2024.03.26 |
---|---|
[React.js] state와 ref 비교하기 (0) | 2024.03.02 |
[React.js] 마우스 호버 효과를 적용하기 위한 커스텀 훅 만들기 (useHover.js) (0) | 2024.02.20 |
[React.js] Node.js 설치부터 리액트 프로젝트 테스트까지 정리 (0) | 2024.02.05 |
[React.js] 클래스 컴포넌트(Class Components)와 함수형 컴포넌트(Functional Components) (0) | 2023.12.14 |
[React.js] React Developer Tools (0) | 2023.12.13 |
[React.js] 리액트(React.js) 개발 환경 구축하기 (Windows) (0) | 2023.11.27 |
[React.js] 리액트(React)에서 HTML 요소의 클래스를 지정할 때 class가 아닌 className을 사용하는 이유? (1) | 2023.11.26 |