ホームページ >ウェブフロントエンド >jsチュートリアル >Vue ith コンポジション API のスロットを理解する
スロットは、コンポーネントが親コンポーネントによってカスタマイズできるコンテンツ領域を定義できるようにする Vue の強力なメカニズムです。これにより、UI コンポーネントの構築における再利用性と柔軟性が促進されます。 Vue 3 は 2 つの主要なスロット タイプを提供します:
Vue 3 では、スロットを使用して子コンポーネントにコンテンツを渡す方法を提供することで、柔軟なコンポーネントを作成できます。 Comboposition API はスロットの使用方法を強化し、より直感的で強力なものにします。
スロットは、コンポーネントの使用時にカスタム コンテンツを入力できるコンポーネント内のプレースホルダー コンテンツを定義する方法です。これらは、再利用可能でカスタマイズ可能なコンポーネントの作成に役立ちます。
Composition API を使用して Vue 3 コンポーネントでスロットを定義して使用する方法は次のとおりです。
デフォルトスロットの例
<template> <div> <slot></slot> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'MyComponent', }); </script>
使用法:
<MyComponent> <p>This is some content passed to the default slot!</p> </MyComponent>
<template> <div> <slot name="header"></slot> <slot></slot> <slot name="footer"></slot> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'LayoutComponent', }); </script>
使用法:
<LayoutComponent> <template #header> <h1>Header Content</h1> </template> <p>Main Content goes here!</p> <template #footer> <footer>Footer Content</footer> </template> </LayoutComponent>
スコープ付きスロットを使用すると、子コンポーネントから親にデータを渡すことができます。
<template> <div> <slot :message="message"></slot> </div> </template> <script> import { defineComponent, ref } from 'vue'; export default defineComponent({ name: 'MessageComponent', setup() { const message = ref("Hello from the child!"); return { message }; }, }); </script>
使用法:
<MessageComponent> <template #default="{ message }"> <p>{{ message }}</p> </template> </MessageComponent>
Composition API とスロットを備えた Vue 3 を使用して、簡単なフードデリバリー アプリケーションを作成してみましょう。この例では、スロットを使用して食品項目のリストとヘッダーとフッターを表示するメインの Fooddelivery コンポーネントを紹介します。
これは、ヘッダー、食品項目、フッターの名前付きスロットを受け入れる Fooddelivery コンポーネントです。
<template> <div class="food-delivery"> <slot name="header"></slot> <div class="food-items"> <slot></slot> </div> <slot name="footer"></slot> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'FoodDelivery', }); </script> <style> .food-delivery { border: 1px solid #ccc; padding: 20px; border-radius: 8px; } .food-items { margin: 20px 0; } </style>
次に、個々の食品を表す単純な FoodItem コンポーネントを作成しましょう。
<template> <div class="food-item"> <h3>{{ name }}</h3> <p>Price: ${{ price.toFixed(2) }}</p> <button @click="addToCart">Add to Cart</button> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'FoodItem', props: { name: { type: String, required: true, }, price: { type: Number, required: true, }, }, methods: { addToCart() { // Logic to add the item to the cart console.log(`${this.name} added to cart!`); }, }, }); </script> <style> .food-item { border: 1px solid #eee; padding: 10px; margin-bottom: 10px; border-radius: 5px; } </style>
次に、Fooddelivery コンポーネントと FoodItem コンポーネントを使用する親コンポーネントにすべてをまとめてみましょう。
Fooddelivery コンポーネント: このコンポーネントは、フードデリバリー サービスのレイアウトとして機能します。ヘッダー、食品アイテムのデフォルト スロット、フッターの 3 つのスロットを受け入れます。
FoodItem コンポーネント: これは個々の食品を表します。これは名前と価格を小道具として受け取り、カートへの商品の追加をシミュレートするメソッドを備えています。
<template> <div> <slot></slot> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'MyComponent', }); </script>
<MyComponent> <p>This is some content passed to the default slot!</p> </MyComponent>
スコープ付きスロットの例を拡張して、より明確で機能的なものにしてみましょう。この例では、スコープ付きスロットを使用して項目データを子コンポーネントから親コンポーネントに渡し、柔軟なレンダリングを可能にする方法を示します。
このコンポーネントは項目のリストを表示し、スコープ付きスロットを使用して、親が各項目のレンダリング方法をカスタマイズできるようにします。
<template> <div> <slot name="header"></slot> <slot></slot> <slot name="footer"></slot> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'LayoutComponent', }); </script>
次に、ItemList コンポーネントを使用し、スコープ付きスロットを使用して各項目をレンダリングするためのカスタム テンプレートを提供する親コンポーネントを作成しましょう。
<template> <div> <slot></slot> </div> </template> <script> import { defineComponent } from 'vue'; export default defineComponent({ name: 'MyComponent', }); </script>
この例では、Vue 3 のスコープ付きスロットを効果的に使用して、柔軟で再利用可能なコンポーネント構造を作成する方法を示します。親コンポーネントは、子コンポーネントによって提供されるデータにアクセスしながら、各項目のレンダリングをカスタマイズできます。
この例は、Vue 3 アプリケーションのスロットを利用して柔軟なフードデリバリー コンポーネント システムを作成する方法を示しています。メインコンポーネントを変更せずに、ヘッダー、フッター、コンテンツを簡単にカスタマイズできます。さらにご質問がある場合、または詳細が必要な場合は、お気軽にコメントでお問い合わせください。
Composition API を使用して Vue 3 の通常のスロットとスコープ指定されたスロットを効果的に活用することで、再利用性とカスタマイズ性の高い UI コンポーネントを構築し、Vue アプリケーションの保守性とコードの編成を促進できます。特定のコンテンツ インジェクションと動的レンダリングの要件に基づいて、適切なスロット タイプを選択できます。
成長する方法はつながることです。
コーディングを楽しんでください!
以上がVue ith コンポジション API のスロットを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。