Props let you pass data to components. Validation helps catch mistakes early by checking the data type and rules.
Prop types and validation in Vue
props: {
propName: {
type: [String, Number, Boolean, Array, Object, Function, Date, Symbol],
required: true | false,
default: defaultValue,
validator: (value) => boolean
}
}The type checks the kind of data passed.
The validator is a function to add custom checks.
props: {
title: String
}props: {
count: {
type: Number,
required: true
}
}props: {
status: {
type: String,
default: 'active',
validator: value => ['active', 'inactive'].includes(value)
}
}This component expects three props: title (string, required), count (number, required), and status (string with default and validation). It shows them in the template.
<template>
<div>
<h2>{{ title }}</h2>
<p>Count: {{ count }}</p>
<p>Status: {{ status }}</p>
</div>
</template>
<script setup>
import { defineProps } from 'vue'
const props = defineProps({
title: {
type: String,
required: true
},
count: {
type: Number,
required: true
},
status: {
type: String,
default: 'active',
validator: value => ['active', 'inactive'].includes(value)
}
})
</script>If a required prop is missing or a prop fails validation, Vue will show a warning in the browser console.
Default values are used only if the prop is not provided.
Use validator for rules that type can't check, like allowed strings.
Props pass data from parent to child components.
Validation helps catch errors by checking type, required status, default values, and custom rules.
Vue shows warnings if props don't match the rules, helping you fix bugs early.
Practice
props with types in a Vue component?Solution
Step 1: Understand what props do in Vue
Props allow passing data from a parent to a child component.Step 2: Recognize the role of prop types
Defining types helps Vue check if the data matches the expected format, catching errors early.Final Answer:
To ensure the component receives data in the expected format -> Option AQuick Check:
Prop types = data format check [OK]
- Thinking prop types affect styling
- Believing prop types improve speed
- Assuming prop types stop rendering
title in a Vue component?Solution
Step 1: Recall Vue prop syntax for validation
Props with validation use an object with keys liketypeandrequired.Step 2: Check the correct order and structure
The correct syntax is{ type: String, required: true }inside the prop definition.Final Answer:
props: { title: { type: String, required: true } } -> Option BQuick Check:
Prop validation uses object with type and required [OK]
- Placing required outside the prop object
- Using array instead of object for validation
- Wrong order or missing keys in prop definition
props: { count: { type: Number, default: 0 } }What will be the value of
count inside the component if the parent does NOT pass any count prop?Solution
Step 1: Understand default prop values
If a prop is not passed, Vue uses the default value if defined.Step 2: Check the default value for
The default is set tocount0, socountwill be 0 inside the component.Final Answer:
0 -> Option AQuick Check:
Missing prop uses default value [OK]
- Assuming undefined if prop is missing
- Confusing null with default value
- Expecting error when prop is missing
props: { age: { type: Number, required: true } }What will happen if the parent passes
age="twenty" (a string) instead of a number?Solution
Step 1: Understand Vue's prop type checking behavior
Vue checks prop types and warns in the console if types don't match but does not stop rendering.Step 2: Check what happens with wrong type
Passing a string instead of a number triggers a console warning but no error or conversion.Final Answer:
Vue will show a console warning about the type mismatch -> Option CQuick Check:
Wrong prop type triggers warning, not error [OK]
- Expecting runtime errors instead of warnings
- Thinking Vue auto-converts prop types
- Assuming default value is used on type mismatch
status that only accepts the strings 'active', 'inactive', or 'pending'. Which is the correct way to add this validation in Vue?Solution
Step 1: Recall how to restrict prop values in Vue
Vue uses avalidatorfunction to check if a prop value is allowed.Step 2: Check the correct validator syntax
The validator is a function returning true if the value is valid, likevalue => ['active', 'inactive', 'pending'].includes(value).Final Answer:
props: { status: { type: String, validator: value => ['active', 'inactive', 'pending'].includes(value) } } -> Option DQuick Check:
Use validator function to restrict prop values [OK]
- Using non-existent 'enum' key for props
- Confusing 'validate' with 'validator'
- Relying only on default or required without value check
Ready to prove it?
Pass the test and this pattern moves unknown
