본문 바로가기

Front-end/React

[React] 훅(Hook)

 

1. 훅(Hook)

기존 함수 컴포넌트는 클래스 컴포넌트와는 다르게 코드가 간결하고 별도로 state를 정의해서 사용하거나 컴포넌트의 생명주기에 맞춰 어떤 코드가 실행되도록 할 수 없었는데 함수 컴포넌트에 이런 기능을 지원하기 위해 나온 것이 훅

-> 훅을 사용하면 함수 컴포넌트도 클래스 컴포넌트의 기능을 모두 동일하게 구현할 수 있음

 

리액트의 훅: 리액트의 state와 생명주기 기능에 갈고리를 걸어 원하는 시점에 정해진 함수를 실행되도록 만든 것으로 이때 실행되는 함수를 훅이라고 부름

 

훅의 이름은 모두 use로 시작되며, 커스텀 훅을 만들어서 사용할 수도 있는데 훅의 규칙에 따라 이름 앞에 use를 붙여서 훅이라는 것을 나타내야함

 

2. 자주 쓰이는 훅(hook) 종류

 

1) useState

 

[React] 훅(Hook) - useState

1. 정의 - 가장 대표적이고 많이 사용되는 훅 - 클래스 컴포넌트가 state를 사용하는 것처럼 함수 컴포넌트에서는 useState() 훅을 사용함 2. 사용방법 - useState()를 호출할 때 파라미터로 선언할 state의

k-sky.tistory.com

2) useEffect

 

[React] 훅(Hook) - useEffect

1. 정의 - useState()와 더불어 가장 많이 사용되는 훅 - 클래스 컴포넌트에서 제공하는 함수인 componentDidMount(), componentDidUpdate(), componentWillUnmount()를 통합한 기능을 제공 - 리액트의 함수 컴포넌트에

k-sky.tistory.com

3) useMemo

 

[React] 훅(Hook) - useMemo

1. 정의 - 컴포넌트가 재렌더링 되면 그 속에 자식 컴포넌트도 항상 함께 재렌더링 됨 -> 자식컴포넌트가 동작이 오래걸리는 무거운 컴포넌트인 경우 부모 컴포넌트를 렌더링 할 때 마다 속도 저

k-sky.tistory.com

4) useCallback

 

[React] 훅(Hook) - useCallback

1. 정의 - useMemo() 훅과 유사한 역할, 차이점은 값이 아닌 함수를 반환한다는 것 - 특정 변수의 값이 변한 경우에만 함수를 다시 정의하게 되므로 함수가 다시 정의되지 않는 경우에 자식 컴포넌트

k-sky.tistory.com

5) useRef

 

[React] 훅(Hook) - useRef

1. 정의 - 레퍼런스(Reference)를 사용하기 위한 훅 리액트의 레퍼런스 특정 컴포넌트에 접근할 수 있는 객체 - useRef()훅은 레퍼런스 객체(ref object)를 반환 - 레퍼런스 객체에는 .current라는 속성이 있

k-sky.tistory.com

6) useNavigate()

 

[React] 훅(Hook) - useNavigate

- 페이지 이동을 도와줌 - 보통 변수에 저장해서 사용 import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom'; function App() { let navigate = useNavigate(); return( { navigate('/detail')}}>Detail { navigate(-1)}}>뒤

k-sky.tistory.com

7) useParams()

 

[React] 훅(Hook) - useParams

- url 파라미터에 입력한 값 가져오기 import { useState } from 'react'; import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom'; import Detail from './routes/Detail'; function App() { return (

k-sky.tistory.com

 

 

3. 훅의 규칙

 

1) 훅은 무조건 최상의 레벨(Top Level)에서만 호출해야 함

- 따라서 반복문이나 조건문 또는 중첩된 함수들 안에서 훅을 호출하면 안됨

- 훅은 컴포넌트가 렌더링 될 때마다 매번 같은 순서로 호출 되어야 함

 

2) 리액트 함수 컴포넌트에서만 훅을 호출해야 함

- 일반적인 자바스크립트 함수에서 훅 호출하면 안됨

- 훅은 리액트 함수 컴포넌트에서 호출하거나 커스텀 훅에서만 호출 가능

 

 

 

4. 커스텀 훅(Custom Hook)

 

1) 필요성

- 리액트에서 기본적으로 제공되는 훅 이외에 추가적으로 필요한 기능이 있는 겨웅

- 여러 컴포넌트에서 반복적으로 사용되는 로직을 훅으로 만들어 재사용하기 위함