فهرست سرفصل‌های 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 — $forceUpdate() ($forceUpdate())

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

$forceUpdate() ($forceUpdate())

متد $forceUpdate() یعنی «اجبار به رندر مجدد». مثل وقتی صفحه را ریفرش می کنی. گاهی عنصر خارج از سیستم واکنشی است. بنابراین Vue خودش تغییر را نمی بیند. این جا می توانی رندر را اجبار کنی.

تعریف و کاربرد

$forceUpdate() یک رندر دوباره اجرا می کند. این متد آرگومان نمی گیرد. معمولاً نیازی به آن نیست. زیرا واکنش پذیری (Reactivity) خودش رندر می کند. اما در حالت های پیشرفته، می تواند مفید باشد.

نکته: اگر می توانی، اول کد را واکنشی کن. سپس فقط وقتی مجبور شدی، از $forceUpdate() استفاده کن.

مثال: تغییر مستقیم DOM و اجبار به رندر

اینجا با $refs متن را مستقیم تغییر می دهیم. سپس با $forceUpdate() رندر را مجبور می کنیم.

<template>
  <div>
    <h3>Force Update Demo</h3>
    <p ref="pEl">Old text</p>
    <button @click="mutateAndRefresh">Mutate and Force Update</button>
  </div>
</template>

<script>
export default {
  methods: {
    mutateAndRefresh() {
      this.$refs.pEl.innerText = 'Hello!';
      this.$forceUpdate();
    }
  }
};
<\/script>

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

گام های عملی

  1. اول راه واکنشی را بررسی کن.
  2. اگر عنصر واکنشی نیست، تغییر را اعمال کن.
  3. در پایان، در صورت نیاز، $forceUpdate() را صدا بزن.

هشدار: استفاده زیاد از $forceUpdate() می تواند کارایی را پایین بیاورد. بنابراین سعی کن داده ها را واکنشی تعریف کنی.

چرا و چه زمانی استفاده کنیم؟

وقتی عنصری عمداً خارج از واکنش پذیری است، رندر خودکار رخ نمی دهد. در این شرایط، $forceUpdate() رندر را تضمین می کند. اما بهتر است اول طراحی داده را بازنگری کنی.

لینک های مرتبط

برای کار با عناصر DOM از $refs کمک بگیر. همچنین زمان بندی رندر را با $nextTick() بهتر کنترل کن. اگر نیاز به چینش محتوا داری، صفحه $slots را ببین. برای اجبار به رندر مجدد در پروژه خودت، الگوی بالا کافی است.

جمع بندی سریع

  • $forceUpdate() رندر مجدد را اجبار می کند.
  • معمولاً به آن نیازی نیست.
  • اول داده را واکنشی طراحی کن.
  • در حالت های خاص از آن استفاده کن.