728x90
반응형
두 컴포넌트의 상태값을 공유해야 한다면?
state를 가장 근접한 부모 컴포넌트로 올리고 props로 전달
만약 모든 컴포넌트에서 상태 값을 공유받아야 하는 경우라면 props drilling이 발생하여 비효율적
이럴 때에 Context API를 활용!
(e.g. 언어, 테마, 로그인 여부 확인)
상태가 변경 될 때마다 모든 컴포넌트에서 리렌더링이 일어나므로 빈번히 업데이트 되는 상태는 활용하지 않는 것이 낫다.
데이터가 어디까지 공유되어야하는지를 판단해서 제대로 된 범위 내의 근접한 컴포넌트에 적용해주는 것이 좋다.
- useContext 사용 예시
import { createContext, useState } from 'react';
export const DarkModeContext = createContext();
export function DarkModeProvider({ children }) {
const [darkMode, setDarkmode] = useState(false);
const toggleDarkMode = () => setDarkmode((prev) => !prev);
return (
//children 요소에 전달해주고자 하는 값을 value로 넘겨주기
<DarkModeContext.Provider value={{darkMode, toggleDarkMode}}>
{children}
</DarkModeContext.Provider>
)
}
728x90
'Frontend > React' 카테고리의 다른 글
[React] 클래스 컴포넌트 (Class Component) (0) | 2023.02.07 |
---|---|
[React] 커스텀 훅 (Custom Hook) (0) | 2023.02.06 |
[React] 고유한 아이디 부여 라이브러리 (uuid) (1) | 2023.02.04 |
[React] 축약어로 함수 편하게 불러오기 [사용자 코드 조각 구성 설정 (snippets)] (0) | 2023.02.04 |
[React] 컴포넌트의 재사용성 (Wrap) (0) | 2023.02.04 |