[원티드 FE 프리온보딩] 3-3. useEffect, Context API

2023. 1. 6.·🎨 프론트엔드 공부/기타

원티드 프론트엔드 프리온보딩 (22.12.19 월 ~ 23.01.20 금)

 

1. useEffect

useEffect에서 의존성 배열 자세히 살펴보기

📍의존성 배열이란?

의존성이란?

- A라는 요소가 온전히 동작하기 위해서 B, C 등의 다른 요소들을 필요로 한다면

- A는 B, C 등에 의존하고 있다고 표현

⭐B, C 등이 A의 의존성이 된다

 

useEffect 의 의존성 배열

- effect 함수가 사용(의존하고 있는) 외부 값들의 모음

 

📍의존성 관점에서 useEffect 제대로 사용하기

⭐가능한 의존성 적게 만들기

⭐setState 함수도 의존성 배열에 넣어야 

- bad

// 많은 의존성 사용
function App() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const intervalID = setInterval(() => {
      setCount(count + 1);
    }, 1000);

    return () => clearInterval(intervalID);
  }, [count, setCount]);

  return (
    <div>
      <h1>count:{count}</h1>
    </div>
  );
}

 

- good

// setCount에 count 대신 콜백함수 사용하여 의존성 줄임
function App() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const intervalID = setInterval(() => {
      setCount(prevCount => prevCount + 1);
    }, 1000);

    return () => clearInterval(intervalID);
  }, [setCount]);

  return (
    <div>
      <h1>count:{count}</h1>
    </div>
  );
}

 

이외에도

- effect 안에 함수를 정의하여 의존성 제거

- effect 안에서 실행할 함수를 컴포넌트 밖에서 정의

- useCallback으로 메모이제이션

같은 방법을 활용할 수 있다

 

2. Context API

📍Context API란?

- React의 단방향 데이터 전달을 극복

- props drilling 문제를 해결

 

📍사용법

1️⃣createContext

- createContext 함수를 통해 context 객체 생성

- 인수로 default value 전달 가능

(Provider에서 데이터 제공하기 전에 사용할 초기값)

 

2️⃣Provider

- 만들어진 context 객체의 프로퍼티 컴포넌트

- value에 전달할 값을 입력

 

3️⃣useContext

- Context의  value에 접근

 

const UserContext = createContext(null);

const user = {name: "yeonuk"};

<UserContext.Provider value={user}>
	<Child />
</UserContext.Provider>


function Child() {
	const user = useContext(UserContext);
	
	return <h1>{user.name}</h1>
}

 

'🎨 프론트엔드 공부/기타' 카테고리의 다른 글
  • [원티드 FE 프리온보딩] 4-2. 횡단 관심사
  • [원티드 FE 프리온보딩] 4-1. 클린 코드, 관심사의 분리, React Custom Hook
  • [원티드 FE 프리온보딩] 3-2. React 렌더링 최적화, React.memo, Advanced Hook
  • [원티드 FE 프리온보딩] 3-1. React 프로젝트 리팩토링 아이템
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
[원티드 FE 프리온보딩] 3-3. useEffect, Context API
상단으로

티스토리툴바