Vue-ում սլոտները ինչու են օգտագործվում և ինչպես են աշխատում?
sobes.tech AI
Պատասխան AI-ից
Vue- ում օգտագործվում են սլոտներ՝ բովանդակությունը ներմուծելու համար արտաքին կոմպոնենտներից։ Սա թույլ է տալիս ստեղծել ճկուն և վերօգտագործվող կոմպոնենտներ։
Կան երեք տեսակի սլոտներ՝
-
Նույնականացված (Default Slots): Օգտագործվում են հիմնական բովանդակությունը տեղադրելու համար։
<template> <div> <slot></slot> </div> </template>Օգտագործում՝
<my-component> <p>Այս բովանդակությունը կտեղադրվի նորմալ սլոտում։</p> </my-component> -
Անվանումով սլոտներ (Named Slots): Հնարավորություն են տալիս տեղադրել բովանդակություն կոնկրետ սլոտներում՝ տարբեր անուններով։
<template> <div> <slot name="header"></slot> <div>Հիմնական բովանդակություն կոմպոնենտի</div> <slot name="footer"></slot> </div> </template>Օգտագործում՝
<my-component> <template v-slot:header> <h2>Վերնագիր</h2> </template> <template v-slot:footer> <p>Ավարտ</p> </template> </my-component>Կրճատ սինտաքս
v-slot-ի համար՝<my-component> <template #header> <h2>Վերնագիր (կրճատ սինտաքս)</h2> </template> </my-component> -
Scoped սլոտներ (Scoped Slots): Позволяют дочернему компоненту передавать данные родительскому через սլոտ։ Родитель может использовать эти данные при ռենդերային բովանդակության։
<template> <ul> <li v-for="item in items" :key="item.id"> <slot :item="item" :index="index"></slot> </li> </ul> </template>Օգտագործում՝
<my-list :items="['Apple', 'Banana', 'Orange']"> <template v-slot:default="slotProps"> {{ slotProps.index + 1 }}. {{ slotProps.item }} </template> </my-list>slotProps-ի դեստրուկտուրային՝<my-list :items="['Apple', 'Banana', 'Orange']"> <template v-slot="{ item, index }"> {{ index + 1 }}. {{ item }} (Դեստրուկտուրացում) </template> </my-list>
Սլոտները աշխատում են՝ ստեղծելով «տեղեր»՝ դուստր կոմպոնենտի շաբլոնում, որտեղ ծնողը կարող է տեղադրել իր սեփական բովանդակությունը։ Երբ ռենդեր է կատարվում, Vue-ն փոխարինում է <slot> (կամ <slot name="...">) նշանները՝ ծնողի տրամադրած բովանդակությամբ։ Scoped սլոտների դեպքում, տվյալները դուստր կոմպոնենտից հասանելի են՝ սլոտի շաբլոնի օբյեկտի միջոցով ծնող կոմպոնենտում։