فهرست سرفصل‌های Vue
خانه (HOME) معرفی (Intro) دایرکتیوها (Directives) v-bind (v-bind) v-if (v-if) v-show (v-show) v-for (v-for) رویدادها (Events) v-on (v-on) متدها (Methods) تغییردهنده های رویداد (Event Modifiers) فرم ها (Forms) v-model (v-model) بایندینگ CSS (CSS Binding) ویژگی های محاسبه شده (Computed Properties) واچرها (Watchers) قالب ها (Templates) چرا، چگونه و راه اندازی (Why, How and Setup) اولین صفحه SFC (First SFC Page) کامپوننت ها (Components) پراپس (Props) کامپوننت های v-for (v-for Components) $emit() ($emit()) ویژگی های عبوری (Fallthrough) (Fallthrough Attributes) استایل Scoped (Scoped Styling) کامپوننت های محلی (Local Components) اسلات ها (Slots) v-slot (v-slot) اسلات های Scoped (Scoped Slots) کامپوننت های پویا (Dynamic Components) Teleport (Teleport) درخواست HTTP (HTTP Request) رفرنس های تمپلیت (Template Refs) هوک های چرخه عمر (Lifecycle Hooks) Provide/Inject (Provide/Inject) مسیریابی (Routing) ورودی های فرم (Form Inputs) انیمیشن ها (Animations) انیمیشن با v-for (Animations with v-for) بیلد (Build) Composition API (Composition API) ویژگی های توکار (Built-in Attributes) ویژگی 'is' ('is' Attribute) ویژگی 'key' ('key' Attribute) ویژگی 'ref' ('ref' Attribute) کامپوننت های توکار (Built-in Components) <KeepAlive> (<KeepAlive>) <Teleport> (<Teleport>) <Transition> (<Transition>) <TransitionGroup> (<TransitionGroup>) المان های توکار (Built-in Elements) <component> (<component>) <slot> (<slot>) <template> (<template>) نمونه کامپوننت (Component Instance) $attrs ($attrs) $data ($data) $el ($el) $parent ($parent) $props ($props) $refs ($refs) $root ($root) $slots ($slots) $emit() ($emit()) $forceUpdate() ($forceUpdate()) $nextTick() ($nextTick()) $watch() ($watch()) دایرکتیوها (Directives) v-bind (v-bind) v-cloak (v-cloak) v-for (v-for) v-html (v-html) v-if (v-if) v-else-if (v-else-if) v-else (v-else) v-memo (v-memo) v-model (v-model) v-on (v-on) v-once (v-once) v-pre (v-pre) v-show (v-show) v-slot (v-slot) v-text (v-text) گزینه های نمونه (Instance Options) داده ها (data) متدها (methods) محاسبه شده ها (computed) watch (watch) پراپس (props) emits (emits) expose (expose) هوک های چرخه عمر (Lifecycle Hooks) beforeCreate (beforeCreate) created (created) beforeMount (beforeMount) mounted (mounted) beforeUpdate (beforeUpdate) updated (updated) beforeUnmount (beforeUnmount) unmounted (unmounted) errorCaptured (errorCaptured) renderTracked (renderTracked) renderTriggered (renderTriggered) activated (activated) deactivated (deactivated) serverPrefetch (serverPrefetch) مثال ها (Examples) تمرین ها (Exercises) کوییز (Quiz) سیلابس (Syllabus) برنامه مطالعه (Study Plan) سرور (Server) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
Vue

Vue — watch (watch)

آخرین بروزرسانی: 1404/08/21

watch (watch)

اینجا درباره «watch» حرف می زنیم. «واچر (Watcher)» یعنی نگهبان داده ها. وقتی مقدار عوض شود، نگهبان بیدار می شود و کاری انجام می دهد.

تعریف «watch» و زمان استفاده

گزینه «watch» یک شیء از واچرهاست. هر واچر هم نامِ یک «داده (data)» یا «محاسبه شده (computed)» است.

وقتی آن ویژگی تغییر کند، تابع واچر خودکار اجرا می شود. آرگومان ها، مقدار جدید و قبلی هستند.

می توان مسیر نقطه ای نوشت؛ مثل tiger.weight. این گونه فقط تغییر وزن رصد می شود.

نمونه کد: جلوگیری از بازه 20 تا 70

<template>
  <div>
    <input type="range" v-model="rangeVal">
    <p>rangeVal: {{ rangeVal }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rangeVal: 4
    };
  },
  watch: {
    rangeVal(val) {
      if (val > 20 && val < 70) {
        if (val < 40) {
          this.rangeVal = 20;
        }
        else {
          this.rangeVal = 70;
        }
      }
    }
  }
};
<\/script>

مشاهده در ادیتور

نمونه کد: نوشتن واچر با شیء و اجرای فوری

<template>
  <div>
    <h2>Example watch Option</h2>
    <p>با immediate: true، مقدار ابتدا به 70 تنظیم می شود.</p>
    <input type="range" v-model="rangeVal">
    <p>rangeVal: <span>{{ rangeVal }}</span></p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rangeVal: 40
    };
  },
  watch: {
    rangeVal: {
      handler(val) {
        if (val > 20 && val < 70) {
          if (val < 40) {
            this.rangeVal = 20;
          }
          else {
            this.rangeVal = 70;
          }
        }
      },
      immediate: true
    }
  }
};
<\/script>

<style>
span {
  padding: 3px;
  font-weight: bold;
  font-family: 'Courier New', Courier, monospace;
  background-color: lightgreen;
}
<\/style>

مشاهده در ادیتور

گام های عملی برای راه اندازی watch

  1. ویژگی هدف را در data یا computed مشخص کن.
  2. در شیء watch، تابع هم نام آن ویژگی بنویس.
  3. داخل تابع، منطق واکنش به تغییر را پیاده کن.

نکته: برای رصد آبجکت های تو در تو، از مسیر نقطه ای استفاده کن.

هشدار: از «Arrow Function» در واچرها پرهیز کن. this به نمونه وصل نمی شود.

جمع بندی سریع

  • watch نگهبان تغییرات داده هاست.
  • به مقدار جدید و قدیم دسترسی داری.
  • مسیر نقطه ای تغییر بخش خاص را می گیرد.
  • immediate اجرا را همان اول فعال می کند.

برای آشنایی های مرتبط ببین: محاسبه شده ها و متدها. همچنین داده ها در data تعریف می شوند.

منابع بیشتر: مرجع watch، Vue Watchers، متد $watch().