Vue2 と比較した Vue3 の変更点: コンポーネント間の通信がより柔軟になりました
Vue2 と比較した Vue3 の変更点: コンポーネント間の通信がより柔軟になりました
フロントエンド開発において、コンポーネントは複雑なアプリケーションを構築するための基本モジュールです。 Vue フレームワークでは、コンポーネント間の通信は常に重要なトピックです。従来の Vue2 バージョンでは、コンポーネント間の通信は主に props とイベントを通じて実現されます。ただし、UI インターフェイスとビジネス ロジックが複雑になるにつれて、このアプローチは柔軟性がなくなる可能性があります。 Vue3 バージョンでは、コンポーネント間の通信をより便利かつ柔軟にするためのより多くのオプションが提供されます。
Vue3 では、provide
と inject
を使用して、複数のネスト レベルにわたって使用できる依存関係注入システムを作成できます。以下は、provide
と inject
を使用してコンポーネント間の通信を実現する方法を示すサンプル コードです。
// ParentComponent.vue <template> <div> <h2>Parent Component</h2> <child-component></child-component> </div> </template> <script> import { provide, ref } from 'vue'; import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, setup() { const message = ref('Hello from parent!'); provide('message', message); return { message }; } }; </script> // ChildComponent.vue <template> <div> <h2>Child Component</h2> <button @click="updateMessage">Update Message</button> <p>{{ message }}</p> </div> </template> <script> import { inject } from 'vue'; export default { setup() { const message = inject('message'); const updateMessage = () => { message.value = 'Updated message from child!'; }; return { message, updateMessage }; } }; </script>
上の例では、親コンポーネント ParentComponent
は、provide## を通じて
message 変数を子コンポーネント
ChildComponent## に渡します。 # 関数 #。子コンポーネントは、inject
関数を通じて親コンポーネントから提供された message
変数を受け取ります。このようにして、子コンポーネントは親コンポーネントのデータに直接アクセスし、必要に応じてデータを更新できます。
と inject
を使用すると、特に多層のネストされたコンポーネント間で、柔軟なコンポーネント通信を実現できます。このアプローチにより、コンポーネント間のデータ転送の複雑さが軽減されるだけでなく、コードの可読性と保守性も向上します。 provide
inject に加えて、Vue3 には新しいグローバル イベント バス (イベント バス) システムも導入されており、コンポーネント間の通信がより便利になります。
createApp 関数の
config オプションを使用してグローバル イベント バスを作成し、
$on、
$off、
$emit およびその他のメソッドを使用して、イベントを監視およびトリガーします。
以下は、コンポーネント通信にグローバル イベント バスを使用するサンプル コードです:
// main.js import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); app.config.globalProperties.$bus = createEventBus(); app.mount('#app'); // event-bus.js import mitt from 'mitt'; export function createEventBus() { const bus = mitt(); return { $on: bus.on, $off: bus.off, $emit: bus.emit }; } // ParentComponent.vue <template> <div> <h2>Parent Component</h2> <button @click="updateMessage">Update Message</button> </div> </template> <script> export default { methods: { updateMessage() { this.$bus.$emit('message-updated', 'Updated message from parent!'); } } }; </script> // ChildComponent.vue <template> <div> <h2>Child Component</h2> <p>{{ message }}</p> </div> </template> <script> export default { data() { return { message: '' }; }, created() { this.$bus.$on('message-updated', (newMessage) => { this.message = newMessage; }); } }; </script>
$bus## を作成することでこれを実現しました。 # 親コンポーネントは子コンポーネントにデータを渡します。親コンポーネントは、
$emit メソッドを呼び出して message-updated
イベントをトリガーし、新しいメッセージをパラメーターとして渡します。子コンポーネントは message-updated
イベントをリッスンし、イベント コールバックで独自の message
データを更新します。 Vue3 フレームワークは、コンポーネント間のより柔軟な通信方法を提供し、依存関係注入システムであっても、グローバル イベント バス システムであっても、コンポーネント開発をより便利かつ柔軟にします。これらの新機能により、複雑なアプリケーションをより適切に構築でき、コードの可読性と保守性が向上します。これらの機能を実際のプロジェクトで使用して、開発効率とコード品質を向上させることを楽しみにしています。
以上がVue2 と比較した Vue3 の変更点: コンポーネント間の通信がより柔軟になりましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Vue で ECharts を使用すると、アプリケーションにデータ視覚化機能を簡単に追加できます。具体的な手順には、ECharts および Vue ECharts パッケージのインストール、ECharts の導入、チャート コンポーネントの作成、オプションの構成、チャート コンポーネントの使用、Vue データに対応したチャートの作成、対話型機能の追加、および高度な使用法の使用が含まれます。

質問: Vue におけるエクスポートのデフォルトの役割は何ですか?詳細説明: エクスポートデフォルトは、コンポーネントのデフォルトのエクスポートを定義します。インポートすると、コンポーネントが自動的にインポートされます。インポートプロセスを簡素化し、明確さを改善し、競合を防ぎます。一般に、名前付きエクスポートとデフォルト エクスポートの両方を使用して、個々のコンポーネントをエクスポートし、グローバル コンポーネントを登録するために使用されます。

Vue.js マップ関数は、各要素が元の配列の各要素の変換結果である新しい配列を作成する組み込みの高階関数です。構文は、map(callbackFn) です。callbackFn は、配列内の各要素を最初の引数として受け取り、オプションでインデックスを 2 番目の引数として受け取り、値を返します。 map 関数は元の配列を変更しません。

Vue.js では、event はブラウザによってトリガーされるネイティブ JavaScript イベントですが、$event は Vue コンポーネントで使用される Vue 固有の抽象イベント オブジェクトです。 $event はデータ バインディングをサポートするようにフォーマットおよび拡張されているため、一般に $event を使用する方が便利です。ネイティブ イベント オブジェクトの特定の機能にアクセスする必要がある場合は、event を使用します。

onMounted は、Vue のコンポーネント マウント ライフ サイクル フックです。その機能は、コンポーネントが DOM にマウントされた後に、DOM 要素への参照の取得、データの設定、HTTP リクエストの送信、イベント リスナーの登録などの初期化操作を実行することです。コンポーネントが更新された後、またはコンポーネントが破棄される前に操作を実行する必要がある場合は、他のライフサイクル フックを使用できます。

Vue.js でモジュールをエクスポートするには、エクスポートとデフォルトのエクスポートの 2 つの方法があります。 export は名前付きエンティティのエクスポートに使用され、中括弧の使用が必要です。export default はデフォルト エンティティのエクスポートに使用され、中括弧は必要ありません。インポートする場合、エクスポートによってエクスポートされたエンティティはその名前を使用する必要がありますが、エクスポートのデフォルトによってエクスポートされたエンティティは暗黙的に使用できます。複数回インポートする必要があるモジュールにはデフォルトのエクスポートを使用し、一度だけエクスポートするモジュールにはエクスポートを使用することをお勧めします。

Vue フックは、特定のイベントまたはライフサイクル ステージでアクションを実行するコールバック関数です。これらには、ライフサイクル フック (beforeCreate、mounted、beforeDestroy など)、イベント処理フック (クリック、入力、キーダウンなど)、およびカスタム フックが含まれます。フックはコンポーネントの制御を強化し、コンポーネントのライフサイクルに対応し、ユーザーの操作を処理し、コンポーネントの再利用性を向上させます。フックを使用するには、フック関数を定義し、ロジックを実行してオプションの値を返すだけです。

Vue.js イベント修飾子は、次のような特定の動作を追加するために使用されます。 デフォルト動作の防止 (.prevent) イベント バブリングの停止 (.stop) ワンタイム イベント (.once) イベントのキャプチャ (.capture) パッシブ イベント リスニング (.passive) アダプティブ修飾子 (.self)キー修飾子 (.key)
