ホームページ > 記事 > ウェブフロントエンド > React Js パートのライフサイクル メソッドと React のフック
React は、宣言的にユーザー インターフェイスを構築できる JavaScript ライブラリです。 React の重要な概念の 1 つは、コンポーネントのライフサイクルを管理する方法です。この記事では、クラス コンポーネントのライフサイクル メソッドとフックという 2 つの主要な側面について説明します。
ライフサイクル メソッドは、コンポーネントのライフサイクルのさまざまな段階で呼び出される特別なメソッドです。以下に、最も一般的なライフサイクル メソッドとその目的をいくつか示します。
constructor(props) { super(props); this.state = { count: 0 }; }
componentDidMount() { this.fetchData(); }
componentDidUpdate(prevProps, prevState): コンポーネントの更新後に呼び出されます。小道具や状態の変化に応答するのに役立ちます。無限ループを避けるために、必ず変更を確認してください。
componentDidUpdate(prevProps) { if (this.props.id !== prevProps.id) { this.fetchData(); } }
componentWillUnmount(): コンポーネントが DOM から削除される直前に呼び出されます。サブスクリプション、タイマー、またはクリーンアップが必要なその他の操作をクリーンアップするのに役立ちます。
componentWillUnmount() { this.cleanup(); }
componentDidCatch(error, info): 子コンポーネントのエラーをキャッチするために使用されます。一元的なエラー処理に役立ちます。
componentDidCatch(error, info) { logErrorToMyService(error, info); }
React Hooks は、クラス コンポーネントを作成せずに状態メソッドとライフサイクル メソッドを使用できるようにする機能です。最も一般的に使用されるフックのいくつかを次に示します:
機能コンポーネントに状態を追加するために使用されます。この関数は、現在の状態とそれを更新する関数のペアを返します。
import React, { useState } from 'react'; const Counter = () => { const [count, setCount] = useState(0); return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increment</button> </div> ); };
useEffect を使用すると、機能コンポーネントで副作用を実行できます。これは、componentDidMount、componentDidUpdate、componentWillUnmount の機能を組み合わせたものです。
constructor(props) { super(props); this.state = { count: 0 }; }
componentDidMount() { this.fetchData(); }
componentDidUpdate(prevProps) { if (this.props.id !== prevProps.id) { this.fetchData(); } }
useContext フックは、機能コンポーネントのコンテキストにアクセスするために使用されます。これは、テーマやユーザー認証ステータスなどのグローバル データをプロップドリルなしで共有する場合に特に便利です。
例: useContext を使用したテーマ
この例では、明るいテーマと暗いテーマを切り替えることができる単純なテーマ コンテキストを作成します。
1.テーマコンテキストを作成します
まず、テーマのコンテキストを作成します。
componentWillUnmount() { this.cleanup(); }
2.テーマコンテキストを消費します
次に、テーマのコンテキストを使用してスタイルを適用し、テーマを切り替えるボタンを提供するコンポーネントを作成できます。
componentDidCatch(error, info) { logErrorToMyService(error, info); }
3.アプリケーションをテーマプロバイダーでラップします
最後に、アプリケーション (またはその一部) を ThemeProvider でラップして、その子にテーマ コンテキストを提供します。
import React, { useState } from 'react'; const Counter = () => { const [count, setCount] = useState(0); return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increment</button> </div> ); };
説明
テーマ コンテキストの作成: createContext と、現在のテーマの状態を管理し、それを切り替える機能を提供する ThemeProvider コンポーネントを使用して ThemeContext を作成します。
コンテキストの消費: ThemedComponent では、useContext(ThemeContext) を使用して現在のテーマと切り替え関数にアクセスします。このコンポーネントは、現在のテーマに基づいてさまざまなコンテンツをレンダリングし、それを切り替えるボタンが含まれています。
アプリケーション構造: アプリケーション全体 (またはその一部) が ThemeProvider でラップされ、子コンポーネントがテーマ コンテキストにアクセスできるようになります。
import React, { useState, useEffect } from 'react'; const FetchDataOnce = () => { const [data, setData] = useState([]); useEffect(() => { const fetchData = async () => { const response = await fetch('https://api.example.com/data'); const result = await response.json(); setData(result); }; fetchData(); }, []); // Effect runs only once when the component mounts return ( <ul> {data.map(item => ( <li key={item.id}>{item.name}</li> ))} </ul> ); };
import React, { useState, useEffect } from 'react'; const CountComponent = () => { const [count, setCount] = useState(0); useEffect(() => { console.log(`Count updated: ${count}`); const fetchData = async () => { const response = await fetch(`https://api.example.com/data/${count}`); const result = await response.json(); console.log(result); }; fetchData(); }); // Effect runs every time the component renders return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increment</button> </div> ); };
フックは、高次コンポーネント (HOC) を使用したりプロップをレンダリングしたりすることなく、コンポーネント間でロジックを共有する柔軟性と機能を提供します。フックを使用する利点は次のとおりです。
ライフサイクル メソッドとフックは、React 開発の 2 つの重要な側面です。両方の概念がどのように機能するかを理解することで、より効率的で保守しやすいコンポーネントを作成できるようになります。特にフックは、機能コンポーネントの開発に新たな可能性をもたらし、状態や副作用との対話方法を変えます。
ライフサイクル メソッドとフックをマスターすることで、より堅牢で応答性の高い React アプリケーションを構築できるようになります。コーディングを楽しんでください!
以上がReact Js パートのライフサイクル メソッドと React のフックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。