v-else and v-else-if help you show or hide parts of your webpage based on conditions. They make your page change when things change.
v-else and v-else-if in Vue
<template> <div v-if="condition1">Content 1</div> <div v-else-if="condition2">Content 2</div> <div v-else>Content 3</div> </template>
v-else must come right after a v-if or v-else-if element without any space or other elements between.
v-else-if lets you check another condition if the first one is false.
<template> <p v-if="score >= 90">You got an A!</p> <p v-else-if="score >= 80">You got a B!</p> <p v-else>You need to try harder.</p> </template>
<template>
<button v-if="isLoggedIn">Logout</button>
<button v-else>Login</button>
</template>This component shows a message based on the weather variable. It first checks if the weather is sunny, then rainy, else shows unknown.
<template>
<div>
<p v-if="weather === 'sunny'">It's sunny outside!</p>
<p v-else-if="weather === 'rainy'">Don't forget your umbrella.</p>
<p v-else>Weather is unknown.</p>
</div>
</template>
<script setup>
import { ref } from 'vue'
const weather = ref('rainy')
</script>Always place v-else or v-else-if immediately after v-if or v-else-if without any other elements in between.
Only one v-else block is allowed per v-if chain.
Use v-else-if to check multiple conditions in order.
v-else and v-else-if control what shows based on conditions.
v-else runs if all previous conditions are false.
v-else-if checks another condition after v-if.
Practice
v-else directive do in Vue?Solution
Step 1: Understand
v-ifandv-else-ifbehaviorv-ifruns if its condition is true;v-else-ifruns if the previousv-iforv-else-ifwas false and its own condition is true.Step 2: Understand
v-elsebehaviorv-elseruns only if all previousv-ifandv-else-ifconditions are false, acting as a fallback.Final Answer:
Runs when all previousv-ifandv-else-ifconditions are false -> Option BQuick Check:
v-else= fallback [OK]
- Thinking v-else runs independently
- Confusing v-else with v-else-if
- Assuming v-else requires a condition
v-else-if in Vue?Solution
Step 1: Recall Vue directive syntax
Vue directives use the formatv-directive="expression"to bind conditions or values.Step 2: Check each option's syntax
<div v-else-if="condition">Content</div>usesv-else-if="condition", which is correct. Options B, C, and D use invalid syntax forms.Final Answer:
<div v-else-if="condition">Content</div> -> Option AQuick Check:
Directive syntax = v-else-if="condition" [OK]
- Omitting quotes around condition
- Using parentheses or colons incorrectly
- Writing v-else-if without a condition
<div v-if="score >= 90">A</div> <div v-else-if="score >= 75">B</div> <div v-else-if="score >= 60">C</div> <div v-else>F</div>
What will be displayed if
score is 80?Solution
Step 1: Evaluate the first condition
Since 80 is less than 90, this condition is false, so this block does not render.score >= 90Step 2: Evaluate the second condition
80 is greater than or equal to 75, so this condition is true. Vue renders this block and skips the rest.score >= 75Final Answer:
B -> Option CQuick Check:
80 >= 75 = true, so output is B [OK]
- Choosing the first condition without checking value
- Ignoring order of v-else-if blocks
- Assuming multiple blocks render
<div v-if="isActive">Active</div> <div v-else-if>Inactive</div> <div v-else>Unknown</div>
Solution
Step 1: Check
v-else-ifusagev-else-ifrequires a condition to evaluate. Here, it is used without any condition, which is invalid syntax.Step 2: Verify other directives
v-elsecan followv-else-if, andv-ifhas proper closing tags, so no issues there.Final Answer:
Thev-else-ifdirective is missing a condition -> Option AQuick Check:
v-else-if needs a condition [OK]
- Leaving v-else-if without condition
- Thinking v-else can't follow v-else-if
- Confusing v-if closing tags
v-if, v-else-if, and v-else to show 'Admin Access', 'Editor Access', or 'Guest Access' respectively?Solution
Step 1: Check the chaining of conditions
<div v-if="status === 'admin'">Admin Access</div> <div v-else-if="status === 'editor'">Editor Access</div> <div v-else>Guest Access</div>
correctly usesv-if, thenv-else-ifwith a condition, thenv-elseas fallback.Step 2: Verify other options for errors
<div v-if="status === 'admin'">Admin Access</div> <div v-if="status === 'editor'">Editor Access</div> <div v-else>Guest Access</div>
uses twov-ifdirectives, which are independent and can cause multiple blocks to render.<div v-if="status === 'admin'">Admin Access</div> <div v-else-if>Editor Access</div> <div v-else>Guest Access</div>
usesv-else-ifwithout a condition, which is invalid.<div v-if="status === 'admin'">Admin Access</div> <div v-else>Editor Access</div> <div v-else-if="status === 'editor'">Guest Access</div>
placesv-elsebeforev-else-if, which breaks the chain.Final Answer:
The template that correctly chains v-if, v-else-if with condition, and v-else -> Option DQuick Check:
v-if, v-else-if with condition, then v-else [OK]
- Using multiple v-if instead of v-else-if
- Omitting condition in v-else-if
- Placing v-else before v-else-if
Ready to prove it?
Pass the test and this pattern moves unknown
