Vue <slot> Element

Vue.js <slot>

Vue <slot> Element

উদাহরণ

আপনার নিজস্ব Vue সার্ভার পান

নেস্টেড <slot> উপাদান ব্যবহার করে মূল উপাদান থেকে শিশু উপাদানের <টেমপ্লেট>-এ বিষয়বস্তু স্থাপন করা।

পিতামাতা

বিষয়বস্তু প্রদান করে

<slot>

ক্যাচার

শিশু উপাদান

বিষয়বস্তু পায়

<template>
  <div>  
    <p>SlotComp.vue</p>
    <slot></slot>
  </div>
</template>

নীচে আরো উদাহরণ দেখুন.

সংজ্ঞা এবং প্রয়োগ

একটি নেস্টেড <slot> উপাদান একটি মূল উপাদান থেকে প্রাপ্ত সামগ্রী স্থাপন করতে ব্যবহৃত হয়।

যখন একটি চাইল্ড এলিমেন্ট কল করা হয়, তখন স্টার্ট- এবং এন্ড-ট্যাগের মধ্যে সরবরাহ করা বিষয়বস্তু সেই চাইল্ড এলিমেন্টের মধ্যে <slot> এলিমেন্টের অবস্থানে শেষ হয়।

একটি উপাদান একাধিক <slot> ধারণ করতে পারে, এবং স্লটগুলিকে নাম প্রপ দিয়ে নামকরণ করা যেতে পারে। এই জাতীয় উপাদানগুলির বিভিন্ন নামযুক্ত স্লট থাকায়, ভি-স্লট কৌশলটি নির্দিষ্ট স্লটে সামগ্রী পাঠাতে ব্যবহার করা যেতে পারে। (উদাহরণ 3)

<slot> এলিমেন্টের স্টার্ট- এবং এন্ড-ট্যাগের মধ্যে বিষয়বস্তু ফ্যালব্যাক কন্টেন্ট হিসেবে ব্যবহার করা হয় যদি অভিভাবক দ্বারা কোন বিষয়বস্তু প্রদান করা না হয়। (উদাহরণ 5)

<slot> প্রপস সহ মূল উপাদানে তথ্য প্রেরণ করা যেতে পারে। (উদাহরণ 8)

🎯গুরুত্বপূর্ণ নোট:

<slot> উপাদানটি শুধুমাত্র সামগ্রীর জন্য একটি স্থানধারক, <slot> উপাদানটি নিজেই একটি DOM উপাদান হিসাবে রেন্ডার করা হয় না।

প্রপস

প্রপস ব্যাখ্যা
[যে কোনো] স্লটে সংজ্ঞায়িত প্রপগুলি 'স্কোপড স্লট' গঠন করে, এবং এই ধরনের প্রপগুলি পিতামাতার কাছে পাঠানো হয়।
name একটি স্লটের নাম দেয় যাতে বিষয়বস্তু নির্দিষ্ট স্লটে প্যারেন্ট ভি-স্লট কৌশল সহ চালানো যায়।

আরো উদাহরণ

উদাহরণ 1

একটি কার্টের মত চেহারা অর্জন করতে বড় গতিশীল এইচটিএমএল কন্টেন্ট ব্লকের চারপাশে মোড়ানোর জন্য স্লট ব্যবহার করা।

App.vue:

<template>
  <h3>Slots in Vue</h3>  
  <p>We create card-like div boxes from the foods array.</p>
  <div id="wrapper">
    <slot-comp v-for="x in foods">
      <img v-bind:src="x.url">
      <h4>{{x.name}}</h4>
      <p>{{x.desc}}</p>
    </slot-comp>
  </div>
</template>

SlotComp.vue:

<template>
  <div> <!-- This div makes the card-like appearance -->
    <slot></slot>
  </div>
</template>

<script></script>

<style scoped>
  div {
    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
    border-radius: 10px;
    margin: 10px;
  }
</style>

💡বর্ণনা:

যখন বিষয়বস্তু <slot> সম্বলিত একটি উপাদান প্রবেশ করে, তখন আমরা <slot> এর চারপাশে একটি div ব্যবহার করি এবং স্থানীয় স্তরে <div> ফর্ম্যাট করি যাতে এটি আমাদের অ্যাপ্লিকেশনের অন্যান্য ডিভগুলিকে প্রভাবিত না করে বিষয়বস্তুর চারপাশে কার্টের মতো চেহারা তৈরি করে।

উদাহরণ 2

পারদ তৈরি করতে একটি স্লট ব্যবহার করে।

<template>
  <h3>Reusable Slot Cards</h3>
  <p>We create card-like div boxes from the foods array.</p>
  <p>We also create a card-like footer by reusing the same component.</p>
  <div id="wrapper">
    <slot-comp v-for="x in foods">
      <img v-bind:src="x.url">
      <h4>{{x.name}}</h4>
    </slot-comp>
  </div>
  <footer>
    <slot-comp>
      <h4>Footer</h4>
    </slot-comp>
  </footer>
</template>

উদাহরণ 3

একটি নির্দিষ্ট স্লটে সামগ্রী পাঠাতে স্লটের নাম ব্যবহার করা।

SlotComp.vue:

<h3>Component</h3>
<div>
  <slot name="topSlot"></slot>
</div>
<div>
  <slot name="bottomSlot"></slot>
</div>

App.vue:

<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp v-slot:bottomSlot>'Hello!'</slot-comp>

উদাহরণ 4

একটি উপাদানের দুটি স্লট রয়েছে এবং উপাদানটিতে পাঠানো সামগ্রী উভয় স্লটেই শেষ হয়৷

App.vue:

<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp>'Hello!'</slot-comp>

SlotComp.vue:

<h3>Component</h3>
<div>
  <slot></slot>
</div>
<div>
  <slot></slot>
</div>

উদাহরণ 5

একটি স্লটে ফলব্যাক সামগ্রী ব্যবহার করা যাতে পিতামাতার কাছ থেকে কোনও সামগ্রী পরিবেশিত না হলে কিছু রেন্ডার করা হয়৷

App.vue:

<template>
  <h3>Slots Fallback Content</h3>
  <p>A component without content provided can have fallback content in the slot tag.</p>
  <slot-comp>
    <!-- Empty -->
  </slot-comp>
  <slot-comp>
    <h4>This content is provided from App.vue</h4>
  </slot-comp>
</template>

SlotComp.vue:

<template>
  <div>
    <slot>
      <h4>This is fallback content</h4>
    </slot>
  </div>
</template>

উদাহরণ 6

একটি নামবিহীন স্লট হবে অভিভাবকের কাছ থেকে সামগ্রীর জন্য ডিফল্ট স্লট৷

SlotComp.vue:

<h3>Component</h3>
<div>
  <slot></slot>
</div>
<div>
  <slot name="bottomSlot"></slot>
</div>

App.vue:

<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp>'Hello!'</slot-comp>

উদাহরণ 7

ডিফল্ট স্লট স্পষ্টভাবে সংজ্ঞায়িত করতে v-slot:default ব্যবহার করে।

SlotComp.vue:

<h3>Component</h3>
<div>
  <slot></slot>
</div>
<div>
  <slot name="bottomSlot"></slot>
</div>

App.vue:

<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp v-slot:default>'Default slot'</slot-comp>

উদাহরণ 8

স্কোপড স্লট: খাবারের নাম অভিভাবককে বলতে স্লটে 'foodName' প্রপ ব্যবহার করে।

SlotComp.vue:

<template>
  <slot
    v-for="x in foods"
    :key="x"
    :foodName="x"
  ></slot>
</template>

<script>
  export default {
    data() {
      return {
        foods: ['Apple','Pizza','Rice','Fish','Cake']
      }
    }
  }
</script>

App.vue:

<slot-comp v-slot="food">
  <h2>{{ food.foodName }}</h2>
</slot-comp>

উদাহরণ 9

স্কোপড স্লট: বস্তুর সাথে অর্ডারের উপর ভিত্তি করে অভিভাবকের সাথে একাধিক জিনিস যোগাযোগ করতে স্লটে প্রপস ব্যবহার করে।

SlotComp.vue:

<template>
  <slot
    v-for="x in foods"
    :key="x.name"
    :foodName="x.name"
    :foodDesc="x.desc"
    :foodUrl="x.url"
  ></slot>
</template>

<script>
  export default {
    data() {
      return {
        foods: [
          { name: 'Apple', desc: 'Apples are a type of fruit that grow on trees.', url: 'img_apple.svg' },
          { name: 'Pizza', desc: 'Pizza has a bread base with tomato sauce, cheese, and toppings on top.', url: 'img_pizza.svg' },
          { name: 'Rice', desc: 'Rice is a type of grain that people like to eat.', url: 'img_rice.svg' },
          { name: 'Fish', desc: 'Fish is an animal that lives in water.', url: 'img_fish.svg' },
          { name: 'Cake', desc: 'Cake is something sweet that tastes good but is not considered healthy.', url: 'img_cake.svg' }
       ]
      }
    }
  }
</script>

App.vue:

<slot-comp v-slot="food">
  <hr>
  <h2>{{ food.foodName }}<img :src=food.foodUrl></h2>
  <p>{{ food.foodDesc }}</p>
</slot-comp>

উদাহরণ 10

নামযুক্ত স্কোপড স্লট ব্যবহার করে একটি পাঠ্যকে "বাম স্লটে" এবং আরেকটি পাঠ্যকে "রাইট স্লট"-এ রাখতে হবে।

SlotComp.vue:

<template>
  <slot
    name="leftSlot"
    :text="leftText"
  ></slot>
  <slot
    name="rightSlot"
    :text="rightText"
  ></slot>
</template>

<script>
  export default {
    data() {
      return {
        leftText: 'This text belongs to the LEFT slot.',
        rightText: 'This text belongs to the RIGHT slot.'
      }
    }
  }
</script>

App.vue:

<slot-comp #leftSlot="leftProps">
  <div>{{ leftProps.text }}</div>
</slot-comp>
<slot-comp #rightSlot="rightProps">
  <div>{{ rightProps.text }}</div>
</slot-comp>

ভিউ টিউটোরিয়াল

ব্যায়াম দিয়ে নিজেকে পরীক্ষা করুন

অভিভাবক থেকে শিশু উপাদানের সামগ্রী পেতে ক্যাচ উপাদান কী?

<!-- Child Component -->
<template>
  <div>  
    <p>Component Title</p>
    
  </div>
</template>
✗ ভুল! <content> Vue-তে একটি অন্তর্নির্মিত উপাদান নয়
✗ ভুল! <component> ডায়নামিক উপাদান তৈরি করতে ব্যবহৃত হয়, বিষয়বস্তু দখলকারী হিসাবে নয়
✓ ঠিক আছে! <slot> হল একটি ক্যাচ এলিমেন্ট যা পিতামাতার কাছ থেকে চাইল্ড এলিমেন্টে সামগ্রী গ্রহণ করে
✗ ভুল! <টেমপ্লেট> বিষয়বস্তুকে গোষ্ঠীভুক্ত করতে ব্যবহৃত হয়, কিন্তু বিষয়বস্তু ধারক হিসাবে নয়