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

推薦する

mysql 行列変換サンプルコード

1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...

Jenkins + Docker + ASP.NET Core の自動デプロイメントの問題について (落とし穴を避ける)

このブログを書くつもりはなかったのですが、実際の操作中に、ネットワークの問題に圧倒されたこと (ネッ...

モバイル Web WAP には Bootstrap と jQuery Mobile のどちらを使用すべきか

問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...

黒、白、グレーの控えめでエレガントなウェブデザインを鑑賞

クラシックな色の組み合わせの中でも、黒、白、グレーの時代を超えた魅力を否定できる人はおそらくいないで...

VueプロジェクトでReactを書く方法の詳細

jsx/tsxファイルを直接作成できます今回のプロジェクト構成は以下のとおりです。 vueファイルで...

Webpack3+React16コード分割の実装

プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...

乱数、文字列、日付、検証コード、UUIDを生成するMySQLメソッド

目次乱数を生成する0から1までの乱数を生成する指定された範囲内で乱数を生成します6桁のモバイル認証コ...

HTMLの水平線注釈とコードコメントの使い方をマスターするだけです

水平線<hr /> タグを使用して、現在の位置に水平の分割線を描画します。例: XML/...

mysqlは指定された期間内の統計データを取得します

mysqlは指定された期間内の統計データを取得します年別統計 選択 カウント(*)、 DATE_FO...

Vue codemirrorはオンラインコードコンパイラの効果を実現します

序文Web 上でオンライン コード コンパイルの効果を実現したい場合は、 CodeMirrorを再度...

ウェブページの読み込み速度を上げる25の方法とヒント

はじめに<br />誰もが高速インターネット接続にアクセスできるわけではありません。たと...

Echarts は 1 つのグラフ内で異なる X 軸を切り替える機能を実装します (サンプル コード)

レンダリング下の画像のような効果を実現したい場合は、読み続けてアニメーション画像に直接進んでください...

Linux でバックグラウンド タスクを実行するために nohup と screen を使用する例と違いの簡単な分析

SSH ターミナル (putty、xshell など) を使用して Linux サーバーに接続し、時...

Linux echo テキスト処理コマンドの使用法と例

Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...