Dynamic Components

Vue.js

Dynamic Components

ডায়নামিক কম্পোনেন্টগুলি 'is' অ্যাট্রিবিউট ব্যবহার করে আপনার ব্রাউজারে ট্যাবগুলির মতো আপনার পৃষ্ঠায় পৃষ্ঠাগুলি চালু করতে ব্যবহার করা যেতে পারে।

কম্পোনেন্ট ট্যাগ এবং 'is' অ্যাট্রিবিউট

ডায়নামিক কম্পোনেন্ট স্যুইচিং

বোতাম

ক্লিক করুন

তথ্য

টগল ভ্যালু টগল

গণনা করা হয়েছে

ActiveComp গণনা করা হয়

<component>

'is' বৈশিষ্ট্য পরিবর্তন হয়

একটি গতিশীল উপাদান তৈরি করতে, আমরা সক্রিয় উপাদান নির্দেশ করতে <component> ট্যাগ ব্যবহার করি। 'is' অ্যাট্রিবিউটটি v-bind-এর সাথে একটি মানের সাথে আবদ্ধ, এবং আমরা সেই মানটিকে আমরা সক্রিয় হতে চাই এমন উপাদানটির নামের সাথে প্রতিস্থাপন করি।

উদাহরণ

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

// App.vue:
<template>
  <h1>Dynamic Components</h1>
  <p>App.vue switches between which component to show.</p>
  <button @click="toggleValue = !toggleValue">
    Switch component
  </button>
  <component :is="activeComp"></component>
</template>

<script>
  export default {
    data() {
      return {
        toggleValue: true
      }
    },
    computed: {
      activeComp() {
        if(this.toggleValue) {
          return 'comp-one'
        }
        else {
          return 'comp-two'
        }
      }
    }
  }
</script>

🔄বর্ণনা:

এই উদাহরণে, একটি <component> ট্যাগ আছে যা comp-one কম্পোনেন্ট বা কম্প-টু কম্পোনেন্টের জন্য একটি স্থানধারক হিসাবে কাজ করে। 'is' অ্যাট্রিবিউটটি <component> ট্যাগে সেট করা আছে এবং গণনা করা মান 'activeComp' জিজ্ঞাসা করে, যার মান হিসেবে 'comp-one' বা 'comp-টু' আছে। এবং একটি বোতাম রয়েছে যা একটি ডেটা অ্যাট্রিবিউটকে 'সত্য' এবং 'ফলস'-এর মধ্যে টগল করে সক্রিয় উপাদানগুলির মধ্যে টগল করতে যেখানে গণনা করা মান সক্রিয় থাকে।

সমস্যা: লেভেল লস

নিচের উদাহরণটি চালান। আপনি লক্ষ্য করবেন যে আপনি একটি উপাদানে যে পরিবর্তনগুলি করেছেন তা আপনি যখন এটিতে ফিরে যান তখন ভুলে যায়৷ কারণ উপাদানটি আনমাউন্ট করা এবং পুনরায় মাউন্ট করা হয়, উপাদানটি পুনরায় মাউন্ট করা হয়।

<KeepAlive> ছাড়া

// পরিবর্তন ভুলে গেছে <component :is="activeComp"></component>
  • ব্যবহারকারীর ইনপুট হারিয়ে গেছে
  • উপাদান পুনরায় লোড করা হয়
  • স্থিতি বজায় রাখা হবে না

<KeepAlive> এর সাথে

// পরিবর্তন মনে রাখা হয় <কিপ অ্যালাইভ> <component :is="activeComp"></component> </KeepAlive>
  • ব্যবহারকারীর ইনপুট মনে রাখা হয়
  • উপাদান ক্যাশে করা হয়
  • স্থিতি বজায় রাখা হয়

<কিপএলাইভ> সমাধান

কম্পোনেন্টে ফিরে আসার সময়, আমরা আপনার পূর্ববর্তী ইনপুট স্থিতি রাখতে <component> ট্যাগের চারপাশে <KeepAlive> ট্যাগ ব্যবহার করি।

উদাহরণ

উপাদানগুলি এখন ব্যবহারকারীর ইনপুট মনে রাখে।

// App.vue:
<template>
  <h1>Dynamic Components</h1>
  <p>App.vue switches between which component to show.</p>
  <button @click="toggleValue = !toggleValue">
    Switch component
  </button>
  <KeepAlive>
    <component :is="activeComp"></component>
  </KeepAlive>
</template>

'অন্তর্ভুক্ত' এবং 'বাদ' বৈশিষ্ট্য

<KeepAlive> ট্যাগের ভিতরের সমস্ত উপাদান ডিফল্টরূপে জীবিত রাখা হবে।

কিন্তু আপনি <KeepAlive> ট্যাগে 'include' বা 'exclude' অ্যাট্রিবিউট ব্যবহার করে শুধুমাত্র নির্দিষ্ট উপাদানগুলিকে সংজ্ঞায়িত করতে পারেন।

আপনি যদি <KeepAlive> ট্যাগে 'include' বা 'exclude' অ্যাট্রিবিউট ব্যবহার করেন, তাহলে আপনাকে অবশ্যই 'নাম' বিকল্পের সাথে উপাদানগুলির নাম দিতে হবে:

// CompOne.vue:
<script>
  export default {
    name: 'CompOne',
    data() {
      return {
        imgSrc: 'img_question.svg'
      }
    }
  }
</script>

include

যে উপাদানগুলি রাখা হবে তা নির্দিষ্ট করে

<KeepAlive include="CompOne">

exclude

এমন উপাদানগুলি নির্দিষ্ট করে যা রাখা উচিত নয়৷

<KeepAlive exclude="CompOne">

অনেক উপাদান

কমা বিচ্ছেদ সহ একাধিক উপাদান

<KeepAlive include="CompOne,CompThree">

উদাহরণ অন্তর্ভুক্ত/বাদ দিন

উদাহরণ অন্তর্ভুক্ত করুন

// App.vue:
<template>
  <h1>Dynamic Components</h1>
  <p>App.vue switches between which component to show.</p>
  <button @click="toggleValue = !toggleValue">
    Switch component
  </button>
  <KeepAlive include="CompOne">
    <component :is="activeComp"></component>
  </KeepAlive>
</template>

<KeepAlive include="CompOne"> এর সাথে, শুধুমাত্র 'ComPOne' উপাদানটি তার অবস্থা এবং পূর্ববর্তী এন্ট্রিগুলি মনে রাখবে৷

উদাহরণ বাদ দিন

// App.vue:
<template>
  <h1>Dynamic Components</h1>
  <p>App.vue switches between which component to show.</p>
  <button @click="toggleValue = !toggleValue">
    Switch component
  </button>
  <KeepAlive exclude="CompOne">
    <component :is="activeComp"></component>
  </KeepAlive>
</template>

<KeepAlive exclude="CompOne"> দিয়ে, শুধুমাত্র 'CompTwo' উপাদান তার অবস্থা মনে রাখবে।

'সর্বোচ্চ' বৈশিষ্ট্য

আপনি <KeepAlive> ট্যাগে অ্যাট্রিবিউট হিসেবে 'max' ব্যবহার করতে পারেন যাতে ব্রাউজারটির অবস্থা মনে রাখতে হবে এমন উপাদানের সংখ্যা সীমিত করতে।

উদাহরণ

// App.vue:
<template>
  <h1>Dynamic Components</h1>
  <label><input type="radio" name="rbgComp" v-model="compName" :value="'comp-one'"> One</label>
  <label><input type="radio" name="rbgComp" v-model="compName" :value="'comp-two'"> Two</label>
  <label><input type="radio" name="rbgComp" v-model="compName" :value="'comp-three'"> Three</label>
  <KeepAlive :max="2">
    <component :is="activeComp"></component>
  </KeepAlive>
</template>

📊উন্নয়ন:

<KeepAlive :max="2"> এর সাথে, ব্রাউজারটি শুধুমাত্র পরিদর্শন করা শেষ দুটি উপাদান থেকে ব্যবহারকারীর ইনপুট মনে রাখবে। এটি মেমরি ব্যবহার অপ্টিমাইজ করে।

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

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

একটি গতিশীল উপাদান তৈরি করার সময় কোন বৈশিষ্ট্য ব্যবহার করা হয়?

<component :
="activeComp"></component>
name
✗ ভুল! 'নাম' বৈশিষ্ট্যটি উপাদানগুলির নামকরণের জন্য ব্যবহৃত হয়, কিন্তু গতিশীল উপাদানগুলিকে সংশোধন করে না
is
✓ ঠিক আছে! 'is' বৈশিষ্ট্যটি নির্দিষ্ট করে যে কোন উপাদানটি বর্তমানে সক্রিয়
type
✗ ভুল! Vue উপাদানের গতিশীল উপাদানগুলির জন্য 'টাইপ' বৈশিষ্ট্যটি ব্যবহার করা হয় না
component
✗ ভুল! 'কম্পোনেন্ট' একটি অ্যাট্রিবিউট নয়, এটি একটি HTML ট্যাগ যা উপাদানগুলিকে গতিশীলভাবে পরিবর্তন করতে ব্যবহৃত হয়