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 で MySQL マスター スレーブ レプリケーションを実装するためのサンプル コード

目次1. 概要1. 原則2. 実装3. スレーブインスタンスを作成する4. マスタースレーブ構成要約...

Vue nextTickの原理の分析

目次イベントループmiscroTask (マイクロタスク) UI レンダリング (重要なポイント)次...

Centos7 に MySQL 8.0.23 をインストールする手順 (初心者レベル)

まず、MySQL とは何かを簡単に紹介します。簡単に言えば、データベースはデータを格納するための倉庫...

ボタンに醜い灰色の枠線が付いています。これを削除するにはどうすればよいですか?

ダイアログをクロージャで使用し、右上隅の向こう側に閉じるボタンがあるダイアログを描画しました。ボタン...

Flask アプリケーションの Docker デプロイ実装手順

1. 目的Flask アプリケーションをローカルで作成し、Docker でパッケージ化し、独自のサー...

MySQL innodb_autoinc_lock_mode について

innodb_autoinc_lock_mode パラメータは、auto_increment 列を持...

React のネストされたコンポーネントの構築順序

目次Reactの公式サイトではライフサイクルの説明を見ることができます次に、ネストされたコンポーネン...

MySql 5.6.35 winx64 インストール詳細チュートリアル

注: データベースのバージョンの問題により、プロジェクトの起動時にエラーは発生しませんでしたが、デー...

32 典型的な列/グリッドベースのウェブサイト

列ベースの Web デザインのインスピレーションをお探しの場合は、32 個のクラシックな列/グリッド...

MySQL ビューの原理と基本操作例

この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...

JS ES 新機能テンプレート文字列

目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...

CSS グリッドレイアウトを使用してレスポンシブな縦棒グラフを作成する方法

私はしばらくの間チャートをいじっていましたが、好奇心から、CSS を使用してチャートを作成するより良...

vue3.0+echarts は 3 次元の縦棒グラフを実現します

序文: Vue3.0はechartsの3次元縦棒グラフを実装します結果: 実装手順: 1. echa...

ethers.js を使用して Solidity スマート コントラクトをデプロイする方法

Ethereum 上で DApps を開発したことがある場合は、フロントエンド JavaScript...