Weekly TIL - Day 10

2025. 4. 24. 10:04·Weekly TIL

⭐️ Today's summary

어제 useEffect도 배웠지만 useEffect는 이해가 잘 되었기에 오늘 배운 useContext와

 

커스텀 훅에 대해서 정리해보겠다.

⭐️ Problem

useContext자체는 이해가 되는데 이걸 커스텀 훅으로 바꾼경우와, 커스텀 훅을 만들어 사용하는

 

코드가 잘 이해되지 않아 정리해 보았다.

⭐️ Try

우선 useContext란 리액트의 컨텍스트 시스템에서 데이터를 꺼내 쓰기 위한 훅이다.

 

복잡한 컴포넌트 구조에서, props를 여러 단계를 거쳐서 전달하는 대신, 원하는 컴포넌트에서 바로

 

데이터를 사용할 수 있게 도와준다. 여기서 커스텀 훅을 사용하여 예시를 설명해보겠다.

 

일단 커스텀 훅이란 React의 기본 훅 (useState, useEfeect, useRef 등)을 조합하여 재사용 가능한

 

로직을 추출한 함수이다. 사용 이유는 커스텀 훅으로 분리하면 코드를 더 깔끔하고 유지보수하기 쉽기 떄문.

 

[ useContext 사용법  - 커스텀 훅 버전]

** App.jsx **

import Hader from './components/useContext/Hader';
import { UserProvider } from './components/useContext/UserContext';

function App() {
    return (
        <>
            <UserProvider>
                <Hader />
            </UserProvider>
        </>
    );
}

export default App;

 

** UserContext.jsx **

import React, { createContext, useContext } from 'react';

const UserContext = createContext();

export function UserProvider({ children }) {
    const user = {
        name: '김개똥',
        age: 55,
        role: '관리자',
    };

    return <UserContext.Provider value={user}>{children}</UserContext.Provider>;
}

export function useUser() {
    return useContext(UserContext);
}

 

** Hader.jsx (Header 오타)**

import React from 'react';
import { useUser } from './UserContext';

const Hader = () => {
    const user = useUser();

    return (
        <header>
            <h2>안녕하세요, {user.name}님</h2>
            <p>
                나이 : {user.age}세, 등급 {user.role}
            </p>
        </header>
    );
};

export default Hader;

 

 

이 코드가 어떻게 돌아가냐면

 

우선 최상위 컴포넌트인 App 컴포넌트가 실행이되면 

 

<UserProvider>

      <Hader/>

</UserProvider> 가 렌더링 된다

 

이때 UserProvider에 들어가보면 createContext라해서 전역으로 상태 및 함수를 관리할 수 있는 공간을 만든다.

 

그 공간을 만들고

 

<UserContext.Provider value={user}>

      {children}

</UserContext.Provider>;

만든 Context 컴포넌트를 Provider로 감싸고 value에 값을 넣는다.

 

이렇게 되면 전역으로 상태관리 할 수 있는 공간인 Context에 value를 넣어 자식(코드 상에선 children을 의미)

 

컴포넌트들에게 값을 전역으로 사용할 수 있는 공간을 제공한다.

 

그리고나서 그 제공하는 함수를 return하기때문에 children에는 Hader컴포넌트가 들어가는 것이다.

 

이제 Hader컴포넌트는 전역으로 관리중인 Context의 value를 꺼내서 사용할 수 있다.

 

여기서 커스텀 훅을 사용하여 Hader에서 useUser()를 호출하여 return 값으로 useContext의 값을

 

사용할 수 있기때문에 Hader컴포넌트에서 value의 객체인 user를 사용하여 코드에 user.name, user.age 등을

 

사용할 수 있게 되는 것이다. 

 

'Weekly TIL' 카테고리의 다른 글

Weekly TIL - Day 12  (0) 2025.04.25
Weekly TIL - Day 11  (1) 2025.04.25
Weekly TIL - Day 9  (0) 2025.04.23
Weekly TIL - Day 8  (2) 2025.04.22
Weekly TIL - Day 7  (2) 2025.04.21
'Weekly TIL' 카테고리의 다른 글
  • Weekly TIL - Day 12
  • Weekly TIL - Day 11
  • Weekly TIL - Day 9
  • Weekly TIL - Day 8
KoesJin
KoesJin
hEELo
  • KoesJin
    Seok DevLog
    KoesJin
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • Back End (31)
        • DataBase (15)
        • JAVA (12)
        • JDBC (4)
      • Front End (9)
        • HTML5 & CSS (3)
        • Java Script (6)
        • REACT (0)
      • Server (9)
        • JSP - TomCat - Servlet (7)
        • Spring Boot (2)
      • GitHub (1)
      • IT 지식 (기술면접 대비) (20)
      • Weekly TIL (39)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    select
    exception
    순서에 대하여
    View
    weekly til - day 43
    from
    dml
    weekly til - day 40
    GC
    order by
    weekly til - day 41
    DDL
    INNER JOIN
    commit
    css
    MVC 패턴
    weekly til - day 38
    where
    weekly til - day 39
    DAO
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
KoesJin
Weekly TIL - Day 10
상단으로

티스토리툴바