ホームページ  >  記事  >  ウェブフロントエンド  >  イベントバスは反応で使用できますか?

イベントバスは反応で使用できますか?

WBOY
WBOYオリジナル
2022-06-27 16:28:551870ブラウズ

イベント バスは React で使用できます。React はコンポーネント間のイベント転送を解決するためにイベント バスを使用します。一般的に使用されるライブラリ イベントを使用して、対応する操作を完了できます。npm または Yarn を使用してインストールできます. events の構文は「npm install events」と「yarn add events」です。

イベントバスは反応で使用できますか?

このチュートリアルの動作環境: Windows 10 システム、react17.0.1 バージョン、Dell G3 コンピューター。

reactでイベントバスが使えるようになる

reactイベントバスで解決できる問題:コンポーネント間のイベント送信

問題がある場合React 開発でコンポーネント間でイベントを転送するにはどうすればよいですか?

A. Vue では、Vue のインスタンスを通じてイベント バス (EventBus) をすばやく実装して操作を完了できます;

B. React では、一般的に使用されるライブラリを利用できます対応する操作を完了するためのイベント;

実装方法

サードパーティ ライブラリ イベントを使用して実装する

共通 API

EventEmitter オブジェクトの作成:eventBus オブジェクト

イベントの発行:eventBus.emit("イベント名", パラメーター リスト)

イベントのリッスン:eventBus.addListener("event name", listen 関数)

イベントの削除:eventBus.removeListener("イベント名", listen 関数)

使用前にインストールする必要があります。次の 2 つの方法のいずれかを選択します

npm install events 
yarn add events

events の練習:

まず、新しいファイル QcEventEmitter.js を作成します。ファイルの内容は次のとおりです:

import { EventEmitter } from 'events'
class QcEventEmitter extends EventEmitter {};
export default new QcEventEmitter();

以下は、イベントを渡す EventTest コンポーネントを実装します。 Person コンポーネント:

EventTest ファイルのコンテンツ

A. QcEventEmitter を EventTest コンポーネントに導入します

B. クリック イベント

import React, { Component } from 'react';
import QcEventEmitter from 'common/utils/QcEventEmitter'
class EventTest extends Component {
  render() {
    return (
      <div>
        <button onClick={e => this.btnCLick()}>测试event事件</button>
      </div>
    );
  }
  btnCLick(){
    QcEventEmitter.emit(&#39;contextClick&#39;, &#39;Lucy&#39;, &#39;99&#39;)
  }
}
# の QcEventEmitter.emit を通じてイベントを送信します##デフォルトの EventTest をエクスポート;

パーソン ファイルの内容

A. QcEventEmitter は Person コンポーネントに導入されています。

B.ComponentDidMount の QcEventEmitter.addListener を通じてイベントをリッスンします。

##C.componentWillUnmount の QcEventEmitter.removeListener に移動します。イベントの監視に加えて、

import React, { Component, useContext } from &#39;react&#39;;
import QcEventEmitter from &#39;common/utils/QcEventEmitter&#39;
class Person extends Component {
  componentDidMount(){
    QcEventEmitter.addListener("contextClick", this.headerClick)
  }
  componentWillUnmount() {
    QcEventEmitter.removeListener("contextClick", this.headerClick)
  }
  headerClick(name, age) {
    console.log(name, age);
  }
  render() {
    return (
      <div>
       <h2>这是Person子组件</h2>
      </div>
    );
  }
}
export default Person;

App.js ファイルで EventTest コンポーネントと Person コンポーネントをレンダリングします (Person コンポーネントがレンダリングされた後、 EventTest によって発行されたイベントをリッスンでき、それらの間の依存関係は必要ありません)

import React from &#39;react&#39;;
import ContetTest from &#39;./pages/contenxt&#39;
import Person from &#39;pages/contenxt/person&#39;
function App() {
  return (
    <div className="App">
      <ContetTest />
      <Person />
    </div>
  );
}
export default App;

【関連する推奨事項:

JavaScript ビデオ チュートリアル

Web フロントエンド]

以上がイベントバスは反応で使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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