[TIL]2023.06.21 useContext 심화학습

Nick·2023년 6월 23일
0

TIL: 오늘을 돌아보자

목록 보기
29/95
post-thumbnail
post-custom-banner

useContext

useContext는 prop driling의 문제점을 보안하기 위한 방법이며, 전역 데이터라고 생각하면 된다.
사용 방법은 context폴더를 생성, 안에 context이름.js 을 생성한다.(컴포넌트라 파스칼케이스 사용)
이후 context파일에 아래와 같은 전역 데이터가 저장될 공간을 만들어 준다.

import { createContext } from "react";

export const FamilyContext = createContext(null);

이후 부모 컴포넌트를 아래와 같이 수정한다.

import React from "react";
import Father from "./Father";
import { FamilyContext } from "../context/FamilyContext";

function GrandFather() {
  const houseName = "스파르타";
  const pocketMoney = 10000;

  return (
    <FamilyContext.Provider value={{ houseName, pocketMoney }}>
      <Father />
    </FamilyContext.Provider>
  );
}

export default GrandFather;

.Provider은 context를 전달해 주는 역할이다.

그리고 해당 context를 받을 자식 컴포넌트에서 아래와 같이 받아서 사용하면 된다.

import React, { useContext } from "react";
import { FamilyContext } from "../context/FamilyContext";

function Child() {
  const { houseName, pocketMoney } = useContext(FamilyContext);

  return (
    <div>
      나는 이 집안의 막내에요.
      <br />
      할아버지가 우리 집 이름은 <span>{data.houseName}</span>
      라고 하셨어요.
      <br />
      게다가 용돈도 <span>{data.pocketMoney}</span>원만큼이나
      주셨답니다.
    </div>
  );
}

export default Child;

주의할 점은 Provider에서 제공한 value가 달라지면 useContext를 사용하는 모든 컴포넌트가 리렌더링 된다.

이 문제는 메모이제이션으로 해결한다.

profile
배우고 도전하는것을 멈추지 않는 개발자 입니다.
post-custom-banner

0개의 댓글