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

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

v-memo (v-memo)

اینجا درباره «بهینه سازی v-memo ویو» حرف می زنیم. «بهینه سازی (Optimization)» یعنی سریع تر کردن کار. «بازرندر (Rerender)» یعنی دوباره سازی بخش های صفحه. با v-memo می گوییم تا وقتی کلیدها عوض نشدند، دوباره سازی نشود.

v-memo چیست و چه زمانی مفید است؟

v-memo دستور (Directive) مخصوص سرعت است. کنار یک «آرایه (Array)» از ویژگی ها می آید. تا وقتی هیچ کدام تغییر نکنند، عنصر و زیربخش ها دوباره رندر نمی شوند. این کار بیشتر در لیست های بزرگ با v-for ارزشمند است.

نکته: اگر آرایه v-memo خالی باشد، مثل v-once عمل می کند. یعنی همان بار اول رندر می شود و دیگر تغییر نمی کند.

نمونه اصلی: رندر فقط هنگام تغییر کلید

در این مثال، فقط وقتی updateProp عوض شود، هر آیتم دوباره سازی می شود. مثل مدرسه؛ تا وقتی نمره تغییر نکند، کارنامه چاپ نمی شود.

<div id="app">
  <div 
    v-for="x in circle" 
    :style="{ backgroundColor: x.color }" 
    v-memo="[updateProp]"
  ></div>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      circle: [
        { color: 'red' },
        { color: 'green' },
        { color: 'blue' }
      ],
      updateProp: 0
    };
  }
});
app.mount('#app');
<\/script>

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

حالت خاص: مثل v-once با آرایه خالی

وقتی آرایه v-memo خالی باشد، دقیقاً مثل v-once رفتار می کند. یعنی فقط یک بار رندر می شود. مانند بازی؛ اسکرین شات می گیری و دیگر تغییر نمی کند.

<div id="app">
  <p v-memo="[]">This paragraph renders only once.</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {};
  }
});
app.mount('#app');
<\/script>

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

گام های عملی سریع

  1. ابتدا لیست را با v-for بساز.
  2. کلیدهای اثرگذار را در آرایه v-memo بگذار.
  3. فقط با تغییر همین کلیدها، رندر انجام می شود.
  4. برای منجمدسازی کامل، از v-memo=[] بهره ببر.

برای لیست ها به v-for سر بزن. برای حالت تک بار هم صفحه v-once را ببین. همچنین این لینک داخلی با کلیدواژه ماست: بهینه سازی v-memo ویو.

جمع بندی سریع

  • v-memo برای سرعت در رندر است.
  • در لیست های بزرگ بیشتر می درخشد.
  • کلیدها را در آرایه تعیین کن.
  • [] یعنی رفتار شبیه v-once.
  • ترتیب و سادگی را حفظ کن.