>웹 프론트엔드 >JS 튜토리얼 >React에서 Context API를 사용하여 전역 및 지속 상태 관리

React에서 Context API를 사용하여 전역 및 지속 상태 관리

Barbara Streisand
Barbara Streisand원래의
2024-12-02 10:46:15854검색

Managing Global and Persistent State with Context API in React

전역 상태 관리는 많은 애플리케이션에서 필수적인 기능입니다. 일반적으로 사용자 로그인 데이터 처리 또는 앱 테마 제어와 같은 작업에 사용됩니다.
또한 일관된 사용자 경험을 보장하려면 페이지를 새로 고칠 때에도 상태를 유지하는 것이 중요합니다.
이 기사에서는 테마 제어의 실제 예와 함께 Context API를 사용하여 전역적이고 지속적인 상태 관리를 달성하는 간단한 접근 방식을 보여 드리겠습니다.

로드맵

1단계: ThemeContext.tsx 생성

이 파일에서는 테마 관련 상태를 전역적으로 관리하기 위해 ThemeContext를 생성합니다. 또한 구성 요소의 컨텍스트에 대한 액세스를 단순화하기 위해 사용자 정의 후크인 useThemeContext를 정의합니다.

import { createContext, useContext } from "react";

// Define context type
interface ThemeContextType {
  isDarkMode: boolean;
  toggleTheme: () => void;
}

// Create context
export const ThemeContext = createContext<ThemeContextType | undefined>(undefined);

// Create custom hook to access
export const useThemeContext = () => {
  const context = useContext(ThemeContext);
  if (!context) {
    throw new Error("useTheme must be used within a ThemeProvider");
  }
  return context;
};

2단계: ThemeProvider.tsx 생성

ThemeProvider 구성 요소는 하위 항목에 ThemeContext를 제공하고 테마 상태 변경을 처리합니다.

import React, { useState } from "react";
import { ThemeContext } from "./ThemeContext";

export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
  const [isDarkMode, setIsDarkMode] = useState(false);

  const toggleTheme = () => {
    const newTheme = !isDarkMode ? "dark" : "light";
    // Change state value
    setIsDarkMode(!isDarkMode);
    // Save value to local storage
    // Toggle "dark" class in html element
    localStorage.setItem("theme", newTheme);
    document.documentElement.classList.toggle("dark", !isDarkMode);
  };

  return (
    <ThemeContext.Provider value={{ isDarkMode, toggleTheme }}>
      {children}
    </ThemeContext.Provider>
  );
};

3단계: ThemeProvider에서 앱 래핑

마지막으로 앱 구성 요소를 main.tsx의 ThemeProvider로 래핑하여 애플리케이션 전체에서 컨텍스트 사용을 활성화합니다.

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.tsx'
import { ThemeProvider } from './context/ThemeProvider.tsx'

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <ThemeProvider>
      <App />
    </ThemeProvider>
  </StrictMode>,
)

4단계: 구성 요소의 컨텍스트 값에 액세스

컨텍스트가 설정되면 이제 구성 요소의 테마 값과 토글 기능에 액세스할 수 있습니다.

import { useThemeContext } from '@/context/ThemeContext';

function App() {
  const { isDarkMode, toggleTheme } = useThemeContext();

  return (
    <div>
      <p>isdarkMode: {isDarkMode}</p>
      <button onclick={toggleTheme}>Toggle Theme</button>
    </div>
  )
}

export default App

결론

이 접근 방식은 Context API를 사용하여 전역 및 지속 상태를 관리하는 방법을 보여줍니다. 이제 사용자 인증이나 언어 설정과 같은 다른 사용 사례에 이 방법을 적용할 수 있습니다.

위 내용은 React에서 Context API를 사용하여 전역 및 지속 상태 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.