Sobes.tech
Middle

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 სლოტებში, მონაცემები ხელმისაწვდომია შვილობილი კომპონენტიდან სლოტის შაბლონის არგუმენტის ობიექტის მეშვეობით.