Vue $watch() Method

Vue $watch() পদ্ধতি সম্পর্কে জানুন

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

$watch() পদ্ধতি ব্যবহার করে একটি প্রহরী তৈরি করুন, যা প্রতিবার 'মান' ডেটা বৈশিষ্ট্য পরিবর্তন করার সময় একটি নতুন বার্তা লেখে।

mounted() {
  this.$watch('value', function() {
    this.results.push('$watch() method')
  })
}

এটি কীভাবে কাজ করে তা দেখতে "এটি নিজে চেষ্টা করুন" বোতামে ক্লিক করুন৷

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

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

পর্যবেক্ষক তৈরি করতে $watch() পদ্ধতি ব্যবহার করা হয়।

$watch() পদ্ধতিটি একটি স্টপ ফাংশন প্রদান করে যা আমরা প্রহরীকে থামাতে ব্যবহার করতে পারি। (উদাহরণ 4 দেখুন)

একজন পর্যবেক্ষক একটি মান (প্রথম যুক্তি) পরিবর্তনগুলি পর্যবেক্ষণ করতে এবং পরিবর্তন ঘটলে কিছু করতে সেট করা হয় (দ্বিতীয় যুক্তি)। অন্যান্য বৈশিষ্ট্যগুলিও পর্যবেক্ষকের জন্য সংজ্ঞায়িত করা যেতে পারে (তৃতীয় যুক্তি)।

Argument ব্যাখ্যা
watch source প্রয়োজন। প্রথম যুক্তি হল ঘড়ির উৎস। এটি একটি উপাদান সম্পত্তি নাম স্ট্রিং (উপরের উদাহরণ), একটি সাধারণ ডট-ডিলিমিটেড পাথ স্ট্রিং (উদাহরণ 5), বা একটি ফাংশন (উদাহরণ 6) হতে পারে।
callback function প্রয়োজন। দ্বিতীয় যুক্তি হল একটি কলব্যাক ফাংশন যা ঘড়ির উৎস পরিবর্তন হলে কার্যকর করা হবে। কলব্যাক ফাংশনটি আর্গুমেন্ট হিসাবে ঘড়ির উত্সের নতুন এবং পুরানো মানগুলি গ্রহণ করার জন্য সেট করা যেতে পারে (উদাহরণ 1 দেখুন)।
options object ঐচ্ছিক। এখানে আমরা গভীর, অবিলম্বে, ফ্লাশ এবং onTrigger/onTrack বিকল্পগুলি নির্দিষ্ট করতে পারি।
গভীরতা: ডিফল্ট মান 'মিথ্যা'। যদি পর্যবেক্ষক গভীর হয়, তবে এটি দেখার জন্য সেট করা সম্পত্তির ভিতরে আরও পরিবর্তনের প্রতিক্রিয়া দেখায়। (উদাহরণ 2 দেখুন)
অবিলম্বে: ডিফল্ট মান 'মিথ্যা'। পর্যবেক্ষক তৈরি হওয়ার সাথে সাথে ট্রিগার করে। প্রথমবার ট্রিগারটি ঘটে যখন প্রহরী 'তাৎক্ষণিক' পুরানো মান 'অনির্ধারিত' সহ 'সত্য' সেট করা হয়। (উদাহরণ 3 দেখুন)
ফ্লাশ: ডিফল্ট মান 'প্রাক'। Render কলব্যাক ফাংশন এবং সম্ভাব্য মান: 'প্রাক', 'পোস্ট', 'সিঙ্ক'। এই ফ্লাশ বিকল্পটি সাবধানে ব্যবহার করুন।
onTrigger/onTrack: ডিবাগিংয়ের জন্য। শুধুমাত্র উন্নয়ন মোডে কাজ করে।

💡দ্রষ্টব্য:

ওয়াচ অপশন ব্যবহার করেও ওয়াচার তৈরি করা যায়।

আরো উদাহরণ

উদাহরণ 1

প্রতিবার 'মান' ডেটা প্রপার্টি পরিবর্তিত হলে পুরানো এবং নতুন মান সহ একটি নতুন বার্তা লিখতে $watch() পদ্ধতি ব্যবহার করুন।

<template>
  <h2>Example $watch() Method</h2>
  <p>Drag the slider to change the value so that the $watch() method is triggered. The callback function writes a message with the new and old values.</p>
  <div>
    <p><input type="range" min="0" max="10" v-model="value"> Current value: {{ value }}</p>
    <ol>
      <li v-for="x in results">{{ x }}</li>
    </ol>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 4,
      results: []
    };
  },
  mounted() {
    this.$watch('value', function(newVal, oldVal) {
      this.results.push('Old value:'+oldVal+', new value: '+newVal)
    })
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}
</style>

উদাহরণ 2

$watch() পদ্ধতিটি ব্যবহার করুন ডিপ ওয়াচ বিকল্পটি 'সত্য'-এ সেট করে। পর্যবেক্ষক এখন 'মান' বস্তুর ভিতরে আরও পরিবর্তন সনাক্ত করতে পারে।

<template>
  <h2>Example $watch() Method</h2>
  <p>Register an extra hobby for Stuart. The hobbies are stored in an array inside the 'value' object. The $watch() method
    is triggered because the 'deep' option is set to 'true' so that the watcher also detects changes further inside the
    object.</p>
  <div>
    <p>Register an extra hobby for Stuart:</p>
    <p><input type="text" ref="inpText"></p>
    <button v-on:click="regHobby">Register</button>
    <ol>
      <li v-for="x in watchMessages">{{ x }}</li>
    </ol>
  </div>
  <p>Current 'value' object:</p>
  <pre>{{ this.value }}</pre>
</template>

<script>
export default {
  data() {
    return {
      value: {
        owner: 'Stuart',
        address: 'Faraway Lane',
        hobbies: ['Bird watching', 'Trail running']
      },
      watchMessages: []
    };
  },
  methods: {
    regHobby() {
      this.value.hobbies.push(this.$refs.inpText.value);
      this.$refs.inpText.value = null;
      this.$refs.inpText.focus();
    }
  },
  mounted() {
    this.$watch('value', function () {
      this.watchMessages.push('watcher triggered')
    }, {
      deep: true
    });
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}

li {
  background-color: lightgreen;
}
</style>

উদাহরণ 3

$watch() পদ্ধতি ব্যবহার করুন অবিলম্বে ঘড়ির বিকল্পটি 'সত্য'-এ সেট করুন। প্রহরী এখন তৈরি হওয়ার সাথে সাথেই ট্রিগার হয়।

<template>
  <h2>Example $watch() Method</h2>
  <p>With the 'immediate' option set to 'true' the watcher is also triggered right after it is created.</p>
  <div>
    <input type="range" min="0" max="10" v-model="value"> Current value: {{ value }}
    <p>Messages from the watcher:</p>
    <ol>
      <li v-for="x in watchMessages">{{ x }}</li>
    </ol>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 4,
      watchMessages: []
    };
  },
  mounted() {
    this.$watch('value', (newVal, oldVal) => {
      this.watchMessages.push('Old value: '+oldVal+' New value: '+newVal)
    }, {
      immediate: true
    });
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}

li:first-child {
  background-color: lightgreen;
}
</style>

উদাহরণ 4

$watch() পদ্ধতি দ্বারা ফিরে আসা স্টপ ফাংশন ব্যবহার করে প্রহরীকে থামান।

<template>
  <h2>Example $watch() Method</h2>
  <p>Drag the slider to see the watcher work, click the stop button, and drag the slider again to confirm that the watcher has now stopped.</p>
  <div>
    <p><input type="range" min="0" max="10" v-model="value"> Current value: {{ value }}</p>
    <button v-on:click="stopFunc">Stop Watcher</button>
    <ol>
      <li v-for="x in results">{{ x }}</li>
    </ol>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 4,
      results: [],
      stopFunc: null
    };
  },
  mounted() {
    this.stopFunc = this.$watch('value', function() {
      this.results.push('$watch() method')
    })
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}
</style>

উদাহরণ 5

$watch() পদ্ধতিটি 'মান' অবজেক্টের ভিতরে 'দেশ' বৈশিষ্ট্য অনুসন্ধান করতে একটি ডট-ডিলিমিটেড পাথ স্ট্রিং ব্যবহার করে।

<template>
  <h2>Example $watch() Method</h2>
  <p>The watcher is set up to watch 'value.country' and will therefore detect when the country is changed inside the 'value' object.</p>
  <div>
    <p>Register a new country for Stuart to live in:</p>
    <p><input type="text" v-model="inpVal"></p>
    <button v-on:click="regHobby">Register</button>
    <ol>
      <li v-for="x in watchMessages">{{ x }}</li>
    </ol>
  </div>
  <p>Current 'value' object:</p>
  <pre>{{ this.value }}</pre>
</template>

<script>
export default {
  data() {
    return {
      inpVal: null,
      value: {
        owner: 'Stuart',
        address: 'Faraway Lane',
        country: 'Mexico'
      },
      watchMessages: []
    };
  },
  methods: {
    regHobby() {
      this.value.country = this.inpVal;
      this.inpVal = null;
    }
  },
  mounted() {
    this.$watch('value.country', function () {
      this.watchMessages.push('watcher triggered')
    });
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}
</style>

উদাহরণ 6

একাধিক মানের পরিবর্তন শুনতে $watch() পদ্ধতিতে একটি ফাংশন ব্যবহার করুন।

<template>
  <h2>Example $watch() Method</h2>
  <p>Using a function as the first argument in the watcher to watch for changes in the sum of value A and value B.</p>
  <div>
    <p>Register a new country for Stuart to live in:</p>
    <p>Value A: <input type="range" min="-10" max="20" v-model="inpValA"> {{ inpValA }}</p>
    <p>Value B: <input type="range" min="-10" max="20" v-model="inpValB"> {{ inpValB }}</p>
    <ol>
      <li v-for="x in watchMessages">{{ x }}</li>
    </ol>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inpValA: 2,
      inpValB: 4,
      watchMessages: []
    };
  },
  mounted() {
    this.$watch( 
      ()=> Number(this.inpValA) + Number(this.inpValB), 
      function (newVal,oldVal) {
        this.watchMessages.push('watcher triggered. A + B = ' + newVal)
      }
    );
  }
};
</script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
}
li {
  background-color: lightgreen;
}
</style>

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

এই টিউটোরিয়ালের অনেক অধ্যায় ব্যায়ামের সাথে শেষ হয় যা আপনার জ্ঞানের স্তর পরীক্ষা করতে পারে।

$watch() পদ্ধতি সম্পর্কে কোন বিবৃতিটি সঠিক?

$watch() একটি স্টপ ফাংশন প্রদান করে যা প্রহরীকে থামাতে ব্যবহার করা যেতে পারে
✓ ঠিক আছে! $watch() পদ্ধতি একটি স্টপ ফাংশন প্রদান করে। আপনি এই ফাংশন কল করে প্রহরী থামাতে পারেন. এটি মেমরি লিক প্রতিরোধ করতে সাহায্য করে
$watch() পদ্ধতির জন্য কলব্যাক ফাংশন ঐচ্ছিক
✗ ভুল! $watch() পদ্ধতির জন্য একটি কলব্যাক ফাংশন প্রয়োজন। এই কলব্যাক ফাংশন ঘড়ির উৎস পরিবর্তন হলে কি করতে হবে তা নির্ধারণ করে
যদি $watch() গভীর বিকল্পটি সত্য হয় তবে বস্তুটি ভিতরের পরিবর্তনগুলি সনাক্ত করবে না
✗ ভুল! যদি গভীর বিকল্পটি সত্য হয়, তাহলে পর্যবেক্ষক বস্তুর মধ্যে নেস্টেড বৈশিষ্ট্যগুলিও পরিবর্তনগুলি সনাক্ত করবে। এটা ডিফল্টরূপে মিথ্যা
$watch() শুধুমাত্র একটি মান দেখতে পারে
✗ ভুল! $watch() শুধুমাত্র একটি মান দেখতে হবে না। একটি ফাংশন একাধিক মানের সংমিশ্রণ বা গণনা দেখতে পারে (যেমন উদাহরণ 6 এ দেখানো হয়েছে)।