ホームページ >ウェブフロントエンド >jsチュートリアル >React でコンポーネント間通信を効果的に管理するにはどうすればよいですか?

React でコンポーネント間通信を効果的に管理するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 01:48:11124ブラウズ

How to Effectively Manage Inter-Component Communication in React?

React のコンポーネント間通信

React では、複数のコンポーネント間で状態を維持するのが難しい場合があります。関連コンポーネント間の通信を容易にする方法は次のとおりです。

シナリオ 1: リストの子としてフィルターする

ハンドラーを親 (リスト) から子 (フィルター)。フィルターが変更されると、Filters のハンドラーは親のメソッドを呼び出して状態を更新し、List での再レンダリングをトリガーします。

シナリオ 2: フィルターとリストの共通の親

通信を委任する親コンポーネントを導入します。親はフィルターにハンドラーを渡し、フィルターが変更されるとフィルターとリストの両方の状態を更新します。

シナリオ #3: グローバル イベント システム

親子関係がある場合は、グローバル イベント システムの使用を検討してください。 「filterUpdated」などのイベント名を定義し、フィルター コンポーネントとリスト コンポーネントの両方でそれをサブスクライブします。フィルタの変更時にイベントをトリガーし、サブスクライブされたコンポーネントに状態を更新するように通知します。

例:

// Global events file
export const myEmitter = new EventEmitter();

// Filters component
componentDidMount() {
  myEmitter.on('filterUpdated', this.handleFilterUpdate);
}

handleFilterChange() {
  // Emit event and pass new filter value
  myEmitter.emit('filterUpdated', newFilterValue);
}

// List component
componentDidMount() {
  myEmitter.on('filterUpdated', this.handleFilterUpdate);
}

handleFilterUpdate(newFilterValue) {
  // Update state
  this.setState({ filterValue: newFilterValue });
}

以上がReact でコンポーネント間通信を効果的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。