useContext
는 REACT가 제공하는 후크로, 모든 레벨에서 소품을 수동으로 전달하지 않고 구성 요소 트리에서 데이터를 소비하고 공유 할 수 있습니다. 이 후크는 "소품 시추"를 피하는 데 특히 유용합니다. 여러 층의 구성 요소를 통해 소품을 전달하는 프로세스는 대규모 응용 프로그램에서 번거롭고 관리하기 어려울 수 있습니다.
useContext
사용하면 React.createContext()
사용하여 컨텍스트를 작성한 다음 useContext(Context)
사용하여 기능 구성 요소 내에서 해당 컨텍스트를 구독 할 수 있습니다. 컨텍스트 값은 구성 요소 트리의 일부를 Context.Provider
로 래핑하고 전 현재 값을 소품으로 전달하여 업데이트 될 수 있습니다.
다음은 useContext
설정하고 사용하는 방법의 기본 예입니다.
<code class="javascript">// Create a Context const ThemeContext = React.createContext('light'); // Use the Context in a component function ThemedButton() { const theme = useContext(ThemeContext); return <button style="{{background:" theme>Themed Button</button>; } // Provide a value for the Context function App() { return ( <themecontext.provider value="dark"> <themedbutton></themedbutton> </themecontext.provider> ); }</code>
React에서 State Management에 useContext
사용하면 몇 가지 이점이 있습니다.
useContext
의 주요 장점 중 하나는 소품 드릴링의 감소 또는 제거입니다. 더 이상 데이터를 사용하지 않는 중간 구성 요소를 통해 소품을 전달할 필요가 없으므로 코드는 더 깨끗하고 유지 관리가 쉬워집니다.useContext
사용하면 구성 요소 계층 전체에서 불필요한 상태 사본을 만들지 않고 필요한 구성 요소에서 상태 중앙 집중식 및 액세스 가능성을 유지할 수 있습니다.useContext
사용하는 구성 요소는 상태의 직접 소비자가 될 수 있으므로, 해당 상태를 업데이트하는 데 직접 행위자가 될 수도 있습니다. 해당 국가를 업데이트 할 수도 있습니다. 컨텍스트에서 디스패치 함수 또는 세터 기능에 액세스 할 수 있습니다.useContext
사용하면 구성 요소가 소품으로 덜 어수선하여 더 깨끗하고 읽기 쉬운 코드로 이어집니다. 또한 응용 프로그램이 자라면서 응용 프로그램을 쉽게 변경하고 유지할 수 있습니다. useContext
여러 가지 방법으로 구성 요소 리 렌더의 성능을 향상시킬 수 있습니다.
useContext
사용할 때 실제로 컨텍스트를 소비하는 구성 요소 만 컨텍스트가 변경 될 때 다시 렌더링됩니다. 이것은 소품 경로의 모든 구성 요소가 소품을 사용하지 않더라도 잠재적으로 재 렌더링 할 수있는 소품 드릴링과 대조됩니다.React.memo
제공하고 클래스 구성 요소에 대한 PureComponent
제공하여 불필요한 재 렌즈를 방지 할 수 있습니다. useContext
와 함께 사용될 때, 이러한 구성 요소는 모든 부모 재 렌더가 아닌 소품 또는 컨텍스트 변경 될 때만 재 렌더링하도록 최적화 될 수 있습니다.Context.Provider
에 응용 프로그램의 어떤 부분을 신중하게 관리함으로써 제공되면, 제공자는 상태 변경에 대한 응답으로 어떤 구성 요소를 재 렌더링 할 수 있는지 제어 할 수 있습니다. 이 목표 재 렌더링은 대규모 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.useContext
글로벌 데이터에 직접 액세스 할 수 있으므로 구성 요소는 PROP 드릴링 중에 발생할 수있는 불필요한 계산 및 데이터 변환을 건너 뛸 수 있습니다. useContext
useState
와 같은 다른 후크와 결합하면 React에서보다 강력하고 유연한 상태 관리 솔루션을 만들 수 있습니다. 다음은 이것들을 함께 사용할 수있는 방법의 예입니다.
<code class="javascript">// Create a context for the theme const ThemeContext = React.createContext(); // Create a provider component that uses useState to manage the theme state function ThemeProvider({ children }) { const [theme, setTheme] = useState('light'); const toggleTheme = () => { setTheme(prevTheme => prevTheme === 'light' ? 'dark' : 'light'); }; return ( <themecontext.provider value="{{" theme toggletheme> {children} </themecontext.provider> ); } // Consume the context in a component function ThemedButton() { const { theme, toggleTheme } = useContext(ThemeContext); return ( <button onclick="{toggleTheme}" style="{{background:" theme> Toggle Theme </button> ); } // Use the provider in the root of your application function App() { return ( <themeprovider> <themedbutton></themedbutton> </themeprovider> ); }</code>
이 예에서 useState
ThemeProvider
내에서 테마 상태를 관리하며 useContext
ThemedButton
과 같은 구성 요소가 해당 상태에 액세스하고 상호 작용할 수 있도록합니다. 이 패턴은 여러 컨텍스트를 결합하거나 useContext
와 함께 Reducer ( useReducer
)와 같은 고급 패턴을 사용하여 중첩 객체 또는 어레이와 같은보다 복잡한 상태 구조를 관리하기 위해 확장 될 수 있습니다.
useContext
useState
와 통합하면 개별 구성 요소가 자신의 로컬 상태를 관리 할 수 있도록 응용 프로그램의 상태를 중앙 집중화하는 확장 가능한 상태 관리 솔루션을 만들 수 있습니다. 이 접근법은 글로벌 및 지역 주 관리를 지원하므로 복잡한 React 응용 프로그램을보다 쉽게 구축하고 유지할 수 있습니다.
위 내용은 usecontext는 무엇입니까? 구성 요소간에 상태를 공유하는 데 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!