Vue3 がコンポーネント通信に mitt を使用する手順

Vue3 がコンポーネント通信に mitt を使用する手順
  • Vue2.x はコンポーネント通信に EventBus を使用しますが、Vue3.x では mitt.js の使用が推奨されています。
  • Vue インスタンス上の EventBus と比較した mitt.js の利点は何ですか?まず、サイズが 200 バイトと非常に小さいです。次に、すべてのイベントの監視と一括削除をサポートしています。Vue インスタンスに依存しないため、フレームワーク間で使用できます。React や Vue、さらには jQuery プロジェクトでも同じライブラリを使用できます。

1. インストール

糸取り付けをお勧めします(使用した人は誰でもその滑らかさを知っています)

糸ミットを追加

またはnpm経由でインストールする

npm インストール --save mitt

2. プロジェクトにインポートしてマウントする

main.jsでグローバルにマウントできる

// 標準 ES モジュラーインポートメソッド import mitt from 'mitt'

const app = createApp(App)

// vue3.x のグローバルインスタンスは config.globalProperties にマウントする必要があります app.config.globalProperties.$EventBus = new mitt()

/common/EventBus.js : ESモジュールをカプセル化して、Mittインスタンスを外部に公開することもできます。

'mitt' から mitt をインポートする
デフォルトの新しい mitt() をエクスポートする

/views/Home.vue : ビジネスモジュールが導入されました

'/common/EventBus.js' から EventBus をインポートします。

3. 使用

リスナー/エミット経由でトリガー

/*
 * アプリ.vue
 */
// セットアップには this がないので、Vue インスタンスを取得するには getCurrentInstance を使用する必要があります。import { getCurrentInstance } from 'vue'
'/common/Mp3Player.js' から {Mp3Player } をインポートします。

エクスポートデフォルト{
  設定(){
    // ctx は Vue2.x ではこれと同等です
    const { ctx } = getCurrentInstance()
    
    // リッスン - 新しいタスクがある場合は、サウンド効果を再生します ctx.$EventBus.on('newTask', data => {
      Mp3Player.再生()
    })

    // *ctx.$EventBus.on('*', data => { を通じてすべてのタスクをリッスンすることもできます。
      console.log('EventBus が来ました', データ)
    })
  }
}


/*
 * コントロール
 */
// 新しいタスクが検出されると、ctx.$EventBus.emit('newTask', data) をトリガーします。

オフ 削除イベント

輸入 {
    マウント解除前、
    現在のインスタンスを取得する
  } から 'vue'

エクスポートデフォルト{
  設定(){
    const { ctx } = getCurrentInstance()

    マウント解除前に(() => {
      // 指定されたイベントを削除します ctx.$EventBus.off('newTask')

      // すべてのイベントを削除します ctx.$EventBus.all.clear()
    })
  }
}

上記は、Vue3 がコンポーネント通信に mitt を使用する手順の詳細です。Vue3 がコンポーネント通信に mitt を使用する詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vue3における非親子コンポーネント通信の詳細な説明
  • Vue3における7種類のコンポーネント通信の詳細
  • Vue3.xはコンポーネント通信にmitt.jsを使用します
  • vue3 コンポーネント通信方法の概要と例

<<:  mysql5.7.21 utf8 エンコーディングの問題と Mac 環境での解決方法

>>:  MySQLの一般的なメモリ不足による起動失敗に対する完璧な解決策

推薦する

Dockerコンテナのエクスポートとインポートの例

目次DockerコンテナのエクスポートDockerコンテナのインポ​​ートこの記事では主に、コンテナ...

display:olck/none を使用してメニューバーを作成する方法

display:bolck/none によるメニューバーの完成の効果 図 1:まず、完成したエフェク...

nginx を使用してブルーグリーン デプロイメントをシミュレートする方法

この記事では、ブルーグリーン デプロイメントと、nginx を使用してブルーグリーン デプロイメント...

nginxリバースプロキシwebSocket設定の詳細な説明

最近、プロジェクトで作業しているときに webSocket プロトコルを使用し、WeChat アプレ...

CSS トランジションを使用した円形ホバー効果のサンプルコード

この記事では ソースコードのオンラインプレビューとダウンロード今日のチュートリアルでは、円のホバー効...

MySQL スロークエリログの詳細な理解

目次スロークエリログとは何ですか?スロークエリを有効にする方法ログ分析ツール mysqldumpsh...

MySQLデータベースの操作とメンテナンスのデータ復旧方法

これまでの 3 つの記事では、論理バックアップと物理バックアップを含む、MySQL データベースの一...

Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明

この記事では、Docker で構築された Laravel および Vue プロジェクトの開発環境を紹...

vue3.0 で要素を使用するための完全な手順

序文: vue3.0の要素フレームワークを使用します。要素はvue2.0をサポートしており、vue3...

MySQL コード実行構造例の分析 [シーケンス、分岐、ループ構造]

この記事では、例を使用して MySQL コード実行構造について説明します。ご参考までに、詳細は以下の...

ローカル写真をアップロードする前にプレビューコード例を実装するための HTML5 と jQuery

HTML5 と jQuery はアップロード前にローカル画像のプレビューを実装しており、その効果は...

MySQL データベースの詳細な説明 - 複数テーブル クエリ - 内部結合、外部結合、サブクエリ、相関サブクエリ

複数テーブルクエリ複数のテーブルから関連するクエリ結果を取得するには、単一の SELECT ステート...

MYSQLはUnionを使用して2つのテーブルのデータを結合し、表示します。

UNION演算子の使用union : 2 つ以上の SELECT ステートメントの結果を 1 つの...

Django+mysql の設定と簡単な操作データベースのサンプルコード

ステップ1: MySQLドライバをダウンロードするcmdは作成されたDjangoプロジェクトディレク...

IE8 互換性について: X-UA-compatible 属性の説明

問題の説明:コードをコピーコードは次のとおりです。 <meta http-equiv=&quo...