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

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

v-if (v-if)

دایرکتیو v-if برای «رندر شرطی (Conditional Rendering)» است. یعنی عنصر فقط وقتی ساخته می شود که شرط true باشد. مثل اعلام «موجود است» وقتی تعداد بیشتر از صفر است.

رندر شرطی با v-if / v-else-if / v-else

در Vue، شرط ها را مستقیم روی تگ می نویسی. بنابراین کد خواناتر می شود و سریع تر نتیجه می گیری.

<p v-if="typewritersInStock">
  in stock
</p>
<p v-else>
  not in stock
</p>

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

شرط با مقایسه عددی

مقایسه مقدارها با عملگرها انجام می شود. اگر تعداد > 0 بود، «موجود است» را نشان بده.

<p v-if="typewriterCount > 0">
  in stock
</p>
<p v-else>
  not in stock
</p>

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

زنجیره کامل شرط ها

می توانی چند حالت بسازی: زیاد، کم، یا ناموجود. از v-else-if بینشان استفاده کن.

<p v-if="typewriterCount > 3">
  In stock
</p>
<p v-else-if="typewriterCount > 0">
  Very few left!
</p>
<p v-else>
  Not in stock
</p>

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

استفاده از عبارت جاوااسکریپت

می توانی داخل شرط از متدهای جاوااسکریپت استفاده کنی؛ مثلاً includes() برای جستجوی کلمه.

<div id="app">
  <p v-if="text.includes('pizza')">The text includes the word 'pizza'</p>
  <p v-else>The word 'pizza' is not found in the text</p>
</div>

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

گسترش: ساخت تگ های دیگر همزمان

اگر شرط درست بود، می توانی چند تگ بسازی؛ مثل یک پیام و یک تصویر.

<div id="app">
  <div v-if="text.includes('pizza')">
    <p>The text includes the word 'pizza'</p>
    <img src="img_pizza.svg">
  </div>
  <p v-else>The word 'pizza' is not found in the text</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"><\/script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
      };
    }
  });
  app.mount('#app');
<\/script>

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

چند حالت متنی مختلف

برای چند کلمه، از v-else-if استفاده کن و نتیجه مناسب بساز.

<div id="app">
  <div v-if="text.includes('pizza')">
    <p>The text includes the word 'pizza'</p>
    <img src="img_pizza.svg">
  </div>
  <div v-else-if="text.includes('burrito')">
    <p>The text includes the word 'burrito', but not 'pizza'</p>
    <img src="img_burrito.svg">
  </div>
  <p v-else>The words 'pizza' or 'burrito' are not found in the text</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"><\/script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
      };
    }
  });
  app.mount('#app');
<\/script>

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

نکته های مهم v-if

از عملگرهای مقایسه و منطقی استفاده کن. همچنین ترتیب v-if، سپس v-else-if، و در پایان v-else را رعایت کن.

<!-- الگوی کلی: -->
<div>
  <!-- شرط اول -->
  <p v-if="conditionA">A</p>
  <!-- شرط دوم -->
  <p v-else-if="conditionB">B</p>
  <!-- در غیر این صورت -->
  <p v-else>Else</p>
</div>

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

گام های عملی

  1. یک داده بولی یا عبارت مقایسه تعریف کن.
  2. روی تگ، v-if قرار بده.
  3. در ادامه، v-else-if و v-else بچین.
  4. مقدار داده را عوض کن و خروجی را ببین.

جمع بندی سریع

  • v-if عنصر را شرطی می سازد.
  • v-else-if برای حالت های میانی است.
  • v-else آخرین گزینه پیش فرض است.
  • از عبارات جاوااسکریپت هم می شود استفاده کرد.

v-bind را مرور کن و سپس به v-show برای نمایش سریع برو.