Vue2.x はコンポーネント通信に EventBus を使用しますが、Vue3.x では mitt.js の使用が推奨されています。 Vue インスタンスでは、mitt.js は EventBus よりも優れている点は何ですか?まず、サイズが 200 バイトと非常に小さいです。次に、すべてのイベントの監視と一括削除をサポートしています。Vue インスタンスに依存しないため、フレームワーク間で使用できます。React や Vue、さらには jQuery プロジェクトでも同じライブラリを使用できます。 クイックスタートnpm インストール --save mitt 方法 1、グローバル バス、Vue エントリ ファイル main.js にグローバル プロパティをマウントします。 'vue' から {createApp} をインポートします。 './App.vue' からアプリをインポートします。 「mitt」からmittをインポートする const app = createApp(App) app.config.globalProperties.$mybus = mitt() 方法 2:カスタム トランザクション バス ファイル mybus.js をカプセル化し、新しい js ファイルを作成して、使用したい場所にインポートします。 'mitt' から mitt をインポートする デフォルトの mitt() をエクスポートする 方法 3:コンポーネントに直接インポートして使用します。分散型アプローチにより管理とトラブルシューティングが容易になるため、この方法を使用することをお勧めします。 <テンプレート> <img alt="Vue ロゴ" src="./assets/logo.png" /> <HelloWorld メッセージ="こんにちは Vue 3.0 + Vite" /> </テンプレート> <スクリプト> 'mitt' から mitt をインポートする './components/HelloWorld.vue' から HelloWorld をインポートします。 エクスポートデフォルト{ コンポーネント: こんにちは世界 }, セットアップ(小道具){ 定数フォームアイテムMitt = mitt() 戻る { フォームアイテムミット } } } </スクリプト> 使い方実際、mitt の使用方法は EventEmitter と似ています。イベントは on メソッドで追加され、off メソッドで削除され、clear メソッドでクリアされます。 'mitt' から mitt をインポートする 定数エミッター = mitt() // イベントをリッスンする エミッター.on('foo', e => console.log('foo', e) ) // すべてのイベントをリッスンする エミッター.on('*', (type, e) => console.log(type, e) ) // イベントを発生させる エミッター.emit('foo', { a: 'b' }) // すべてのイベントをクリアする エミッタ.すべて.クリア() // ハンドラー参照の操作: 関数 onFoo() {} emittingter.on('foo', onFoo) // 聞く emittingter.off('foo', onFoo) // 聞き取りを停止 mitt を new ではなく関数呼び出しの形式でインポートしたことに注意してください。イベントを削除するときは、イベントを定義する関数の名前と参照を渡す必要があります。 基本原則原理は非常に単純で、マップメソッドを通じて関数を保存することです。削除後、コードは 30 行未満になりました。 デフォルト関数mitt(all)をエクスポートする{ すべて = すべて || 新しい Map(); 戻る { 全て、 on(タイプ、ハンドラ) { const ハンドラ = all.get(type); const が追加されました = handlers && handlers.push(handler); (!追加)の場合{ all.set(type, [ハンドラ]); } }, オフ(タイプ、ハンドラ) { const ハンドラ = all.get(type); if (ハンドラ) { handlers.splice(handlers.indexOf(handler) >>> 0, 1); } }, 出力(タイプ、イベント) { ((all.get(type) || [])).slice().map((handler) => { handler(evt); }); ((all.get('*') || [])).slice().map((handler) => { handler(type, evt); }); } }; } Vue3 では、インスタンスから $on、$off、$once メソッドが完全に削除されました。 $emit は、親コンポーネントによって宣言的にアタッチされたイベントをトリガーするために使用されるため、引き続き既存の API の一部です。 これで、コンポーネント通信に mitt.js を使用する Vue3.x に関するこの記事は終了です。Vue3.x mitt.js コンポーネント通信に関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
今日は、参考までに、jsを使用してカルーセルマップの効果を実現する方法についてお話ししましょう。具体...
アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...
Union は、重複行を除外し、デフォルトのソートを実行する、データに対する結合操作です。Union...
Nginx は、高性能な Web サイト サーバーおよびリバース プロキシ サーバーであり、IMAP...
この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...
次のような初期コードがあると仮定します。 <!DOCTYPE html> <htm...
なぜ仮想DOMが必要なのでしょうか?仮想 DOM はブラウザのパフォーマンス問題を解決するために設計...
ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...
1. Web ページをデザインするときに、幅を決定するのは非常に面倒な作業です。 jb51.net ...
セットアップは、結合された API を記述するために使用されます。テンプレートが使用できるようにする...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
最近、Docker に MySQL をインストールしたところ、データベースの時刻がシステム時刻と 8...
必要:ビジネス要件によると、写真をアップロードできる必要があり、アップロードされた写真はモバイル端末...
IE8 の新機能 Web スライス (Web スライス) Microsoft は 3 月 20 日...
目次ライフサイクルの変化反応的な参照vue2.x では ref を使用して要素タグを取得します。vu...