最新のアプリケーション、特に Web アプリを開発する場合、時間の経過とともに変化するデータを管理する必要があることがよくあります。たとえば、ユーザーがボタンをクリックすると、表示を更新したり、サーバーから新しいデータを取得したりする必要がある場合があります。 useState や useEffect などのフックは、これをスムーズに処理するのに役立ちます。これらの概念がどのように機能するかを分析し、それらを段階的に設計する方法を検討してみましょう。
このガイドを理解しやすくするために、各フックをその重要なロジックに分解し、そこから構築していきます。
シンプルなカウンター アプリがあると想像してください。ボタンを押すたびに、数値が 1 ずつ増えます。これを機能させるには、現在の数値をどこかに保存し、ボタンをクリックするたびに更新する必要があります。
useState は次のことを行う必要があります:
useState が内部でどのように機能するかについての基本的な内訳は次のとおりです。
useState の単純な構造を定義しましょう:
useState の単純なバージョンは次のようになります。
function useState(initialValue) { // Step 1: Create a variable to hold the current state value let currentState = initialValue; // Step 2: Define a function to update this value function setState(newValue) { // Update the state currentState = newValue; // Simulate a re-render (you’d do this differently in a real application) render(); } // Step 3: Return the state and the function to update it return [currentState, setState]; } // Usage example: const [count, setCount] = useState(0); console.log(count); // Outputs: 0 setCount(1); // Updates state to 1 console.log(count); // Outputs: 1 (in real use, this would trigger re-rendering)
useState はローカル データを処理しますが、useEffect を使用すると、データのフェッチやドキュメント タイトルの更新などの「副作用」を実行できます。副作用とは、外部世界とのあらゆる相互作用です。
useEffect は次のようにする必要があります:
useEffect の主な部分は次のとおりです:
useEffect の単純な構造を設定してみましょう:
useEffect の基本バージョンは次のとおりです:
let previousDeps; // To store previous dependencies function useEffect(effectFunction, dependencies) { // Step 1: Check if dependencies have changed const hasChanged = dependencies ? !previousDeps || dependencies.some((dep, i) => dep !== previousDeps[i]) : true; // Step 2: Run the effect function if dependencies changed if (hasChanged) { effectFunction(); previousDeps = dependencies; // Update the previous dependencies } } // Usage example: useEffect(() => { console.log("Effect has run!"); // Simulate cleanup if needed return () => console.log("Cleanup effect!"); }, [/* dependencies */]);
useState と useEffect の両方を使用してコンポーネントをシミュレートしましょう。
function Component() { // Initialize state with useState const [count, setCount] = useState(0); // Log a message each time count changes with useEffect useEffect(() => { console.log(`Count has changed to: ${count}`); }, [count]); // Re-run effect if count changes // Simulate user interaction setCount(count + 1); }
この例では:
useState と useEffect の設計には以下が含まれます:
これらのフックは、単純なカウンター、データのフェッチ、またはより複雑な状態管理のいずれであっても、動的で対話型のアプリケーションを構築するのに役立ちます。これらのフックの基礎があれば、ユーザーのアクションやリアルタイムのデータ変更に応答するアプリを作成するための準備が整います!
以上がuseState フックと useEffect フックを設計する方法: 初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。