Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
[React]: 리액트 훅(hook)
frontend
react

[React]: 리액트 훅(hook)

Jay Kim
Jay Kim 05 Dec 2023
[React]: 컴포넌트간 데이터 전달 (with Props) [React]: 데이터 폼 양식 만들기

Table of Contents

  • 훅(Hook)
  • State Hooks
    • useState
  • Context Hooks
    • useContext
  • Ref Hook
    • useRef
  • Effect Hook
    • useEffect
  • Performance Hooks
    • useMemo
    • useCallback
  • 참고

훅(Hook)

  • 훅은 리액트에서 제공하는 여러 특징들을 사용할 수 있도록 도와준다

State Hooks

  • 상태(state)는 컴포넌트가 어떤 값을 기억하도록 한다

useState

  • 상태(state) 변수를 선언할 때 useState 훅을 사용한다
function ImageGallery() {
  const [index, setIndex] = useState(0);
  // ...

Context Hooks

  • 컨텍스트(context)는 부모 컴포넌트가 멀리 떨어져 있는 자식 컴포넌트에게 값을 전달하도록 해준다

useContext

  • 정의한 컨텍스트를 읽고 구독할 때 useContext 훅을 쓴다
function Button() {
  const theme = useContext(ThemeContext);
  // ...

Ref Hook

  • 참조(ref)는 상태(state)처럼 어떤 값을 저장하는 목적으로 쓰인다
  • 하지만 상태(state)와 다르게 참조(ref)가 바뀌어도 컴포넌트가 리렌더링 되지는 않는다
  • (When you change the ref.current property, React does not re-render your component)

useRef

  • 참조(ref)를 정의할 때 useRef 훅을 쓴다
  • 어떤 값도 저장할 수 있지만, 대부분의 경우 DOM 노드를 참조하는 목적으로 쓴다
function Form() {
  const inputRef = useRef(null);
  // ...

Effect Hook

  • 효과(effect)는 컴포넌트를 다른 외부 시스템과 동기화되도록 연결시켜 준다
  • 네트워크, 브라우저의 DOM, 애니메이션 등 non-React 코드를 다룰 때 사용한다

useEffect

  • 컴포넌트를 다른 외부 시스템과 연결할 때 useEffect 훅을 사용한다
useEffect(setup, dependencies?)
function ChatRoom({ roomId }) {
  useEffect(() => {
    const connection = createConnection(roomId);
    connection.connect();
    return () => connection.disconnect();
  }, [roomId]);
  // ...
  • setup
    • optionally return a cleanup function
    • 컴포넌트가 처음 DOM에 추가될 때 setup 함수가 실행된다
    • dependencies 변화로 리렌더링 될 때마다 cleanup 함수 실행 with old props and state
    • 그리고 setup 함수 실행 with new props and state
    • 컴포넌트가 DOM 에서 제거될 때 cleanup 함수 실행
  • dependencies
    • setup 함수 안에서 참조된 reactive values 를 목록으로 가지는 배열
    • (reactive values: props, state, variables, 컴포넌트 안에서 정의된 함수)
    • 리액트는 배열안의 값들을 하나씩 비교해서 변경된 경우 setup 함수 실행
  • If some of your dependencies are objects or functions defined inside the component, there is a risk that they will cause the Effect to re-run more often than needed. To fix this, remove unnecessary object and function dependencies. You can also extract state updates and non-reactive logic outside of your Effect.
  • Effects only run on the client. They don’t run during server rendering.

Performance Hooks

  • 리액트에서는 리렌더링을 최적화 하기 위해 캐시된 계산 결과를 재사용해서 불필요한 리렌더링을 방지한다

useMemo

  • useMemo는 어떤 계산 결과를 캐시하도록 해준다

useCallback

  • useCallback lets you cache a function definition before passing it down to an optimized component.

참고

  • Built-in React Hooks, react.dev
  • Rules of Hooks, react.dev
  • React — Uncaught TypeError: destroy is not a function
[React]: 컴포넌트간 데이터 전달 (with Props) [React]: 데이터 폼 양식 만들기

You may also like

See all react
25 May 2024 [React Hook]: useRef
frontend
react

[React Hook]: useRef

15 May 2024 [React Hook]: useEffect
frontend
react

[React Hook]: useEffect

05 May 2024 [React Hook]: useState
frontend
react

[React Hook]: useState

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.