React では、状態の管理は動的でインタラクティブなアプリケーションを構築するために重要です。 useState と useReducer はローカル コンポーネントの状態を処理するのに最適ですが、複数のコンポーネントにわたるグローバルな状態を管理する必要がある場合はどうなるでしょうか? useContext と useReducer を入力します。これら 2 つのフックを一緒に使用すると、グローバル レベルで状態管理を効率的に処理できます。
この記事では、useContext と useReducer を組み合わせて React アプリの堅牢な状態管理システムを作成する方法を検討します。両方のフックの基本を説明し、次に簡単なアプリケーションを構築して、グローバル状態を管理するためにこれらを組み合わせて使用する方法を説明します。
このガイドを終えるまでに、次の内容をしっかりと理解できるようになります。
始めましょう!
useContext は、すべてのレベルで手動で props を渡すことなく、コンポーネント ツリー全体で状態 (またはその他の値) を共有できるようにする React フックです。これは、グローバル データを多くのコンポーネントに一度に提供する必要がある場合に役立ちます。
useContext の構文は次のとおりです:
const value = useContext(MyContext);
ここで、MyContext は React.createContext() によって作成されたコンテキスト オブジェクトです。
useReducer は、複雑なロジックを含む状態、または状態が以前の状態に依存する場合に状態を管理するために使用される React フックです。これは、状態の更新がアクションに基づいている必要があり、複数の種類の状態変更がある場合に、useState の代替としてよく使用されます。
useReducer の構文は次のとおりです:
const value = useContext(MyContext);
useContext と useReducer を組み合わせると、状態遷移のロジックを一元化しながら、アプリケーション全体で複雑な状態を共有できます。これは、アプリ内の任意のコンポーネントからアクセスできる必要があるグローバル状態を管理する場合に特に役立ちます。
useContext と useReducer を使用してグローバル状態を管理する、単純な To-Do リスト アプリケーションを作成してみましょう。このアプリはタスクの追加、切り替え、削除をサポートします。
グローバルな状態を保持するコンテキストとアクションを管理するリデューサーを作成することから始めます。
const [state, dispatch] = useReducer(reducer, initialState);
次に、ToDo リストを表示し、タスクの追加、削除、切り替え機能を提供するコンポーネントを作成します。
import React, { createContext, useContext, useReducer } from 'react'; // Initial State const initialState = []; // Reducer Function function todoReducer(state, action) { switch (action.type) { case 'ADD': return [...state, { id: Date.now(), text: action.payload, completed: false }]; case 'TOGGLE': return state.map(todo => todo.id === action.payload ? { ...todo, completed: !todo.completed } : todo ); case 'REMOVE': return state.filter(todo => todo.id !== action.payload); default: return state; } } // Create Context const TodoContext = createContext(); // Provide Context to App export function TodoProvider({ children }) { const [state, dispatch] = useReducer(todoReducer, initialState); return ( <TodoContext.Provider value={{ state, dispatch }}> {children} </TodoContext.Provider> ); }
この記事では、useContext と useReducer を組み合わせて、React アプリケーションのグローバル状態を管理しました。私たちは次の場所を歩きました:
このパターンは拡張性が高く、アプリが複雑になるにつれて、useContext と useReducer は、クリーンで予測可能で効率的な状態管理ソリューションを維持するのに役立ちます。これらの概念を実験し、プロジェクトに適用して状態処理を改善してください。
コーディングを楽しんでください! ?
以上がReact の useContext と useReducer のチュートリアル ガイド: グローバル状態の効率的な管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。