슬롯은 구성 요소가 상위 구성 요소에 의해 사용자 정의될 수 있는 콘텐츠 영역을 정의할 수 있도록 하는 Vue의 강력한 메커니즘입니다. 이는 UI 구성요소 구축 시 재사용성과 유연성을 향상시킵니다. Vue 3는 두 가지 기본 슬롯 유형을 제공합니다:
Vue 3에서 슬롯을 사용하면 콘텐츠를 하위 구성 요소에 전달하는 방법을 제공하여 유연한 구성 요소를 만들 수 있습니다. Composition 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 Composition API의 슬롯 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!