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の一般的なメモリ不足による起動失敗に対する完璧な解決策

推薦する

N キロメートル以内のデータを検索する MySQL の簡単な例

地球の円周率と半径、検索ポイントの経度と緯度から、検索ポイントと検索データテーブル間の距離はNキロメ...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...

MySQL 8.0 の非表示列に対する基本操作

目次01 非表示の列を作成する02 非表示の列に対する基本操作03 非表示の列メタデータ04 主キー...

nginx が複数のプロキシ層を通過して実際の送信元 IP を取得するプロセスの詳細な説明

質問Nginx は $remote_addr を実際の IP アドレスとして受け取りますが、実際には...

CentOS 8 Zabbix 4.4 インストール ガイド

Zabbix サーバー環境プラットフォームZABBIX バージョン 4.4セントOS8 MySQL ...

Linux でパスワードを入力せずに sudo コマンドを実行する方法

sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...

Nginx がサーバーの生存状態をパッシブにチェックする詳細な説明

導入定期的にヘルスチェックを送信して、アップストリーム グループ内の HTTP サーバーのヘルスを監...

MySQL 整合性制約の定義と例のチュートリアル

目次整合性制約整合性制約の定義整合性制約の分類主キー制約単一の主キーと複合主キーの違い主キーフィール...

Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

Chromeブラウザの自動パスワード保存プロンプト機能を無効にする方法

注: Web 開発では、フォームに autocomplete="off" を追加...

MySQL がテーブルを読み取れないエラー (MySQL 1018 エラー) の解決方法

1. エラーの再現MySQL データベースにはアクセスできますが、データベース テーブルを読み取るこ...

Alibaba Cloud Server で MySQL デュアルマシン ホットスタンバイを手動で実装する 2 つの方法

1. コンセプト1. ホットバックアップとバックアップの違いホット バックアップは高可用性 (HA)...

相対幅と絶対幅が競合する場合の HTML+CSS div ソリューション

相対幅と絶対幅が競合する場合のdivソリューション概要: 一般的に、絶対幅を使用する場合は px を...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...