useEffect フックは React の基本的な部分であり、機能コンポーネントで副作用を実行できるようにします。詳細な内訳は次のとおりです:
useEffect(() => { // Your side effect code here return () => { // Cleanup code (optional) }; }, [dependencies]);
効果関数: 最初の引数は副作用コードを含む関数です。この関数は、レンダリングが画面にコミットされた後に実行されます。
クリーンアップ関数 (オプション): エフェクト関数は、コンポーネントがアンマウントされるとき、またはエフェクトが再度実行される前に React が呼び出すクリーンアップ関数を返すことができます。これは、サブスクリプションやタイマーをクリーンアップするのに役立ちます。
Dependency Array: 2 番目の引数は依存関係の配列です。この効果は、依存関係の 1 つが変更された場合にのみ実行されます。空の配列 ([]) を渡すと、エフェクトは最初のレンダリング後に 1 回だけ実行されます (componentDidMount など)。
import React, { useEffect, useState } from 'react'; const DataFetchingComponent = () => { const [data, setData] = useState(null); useEffect(() => { fetch('https://api.example.com/data') .then(response => response.json()) .then(data => setData(data)) .catch(error => console.error('Error fetching data:', error)); }, []); // Runs only once after the initial render return{data ? JSON.stringify(data) : 'Loading...'}; };
import React, { useEffect } from 'react'; const EventListenerComponent = () => { useEffect(() => { const handleResize = () => { console.log('Window resized:', window.innerWidth); }; window.addEventListener('resize', handleResize); // Cleanup function to remove the event listener return () => { window.removeEventListener('resize', handleResize); }; }, []); // Runs only once after the initial render returnResize the window and check the console.; };
import React, { useEffect, useState } from 'react'; const TimerComponent = ({ delay }) => { const [count, setCount] = useState(0); useEffect(() => { const timer = setInterval(() => { setCount(prevCount => prevCount 1); }, delay); // Cleanup function to clear the timer return () => clearInterval(timer); }, [delay]); // Runs every time `delay` changes returnCount: {count}; };
useEffect フックは、機能コンポーネントの副作用を処理するための強力なツールであり、最新の React 開発には不可欠です。その構文とベスト プラクティスを理解することで、コンポーネントの動作と副作用を効果的に管理できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3