Що таке `props` у Vue?
Props у Vue - це вхідні параметри компонента, за допомогою яких батько передає дані дочірньому компоненту.
Простіше кажучи:
- props - це спосіб передати дані «зверху вниз», від батька до дитини.
- Це аналог аргументів функції, але для компонентів.
Простий приклад
Батько:
<UserCard :name="userName" :age="28" />Дочірній компонент (UserCard.vue):
<script setup>
const props = defineProps({
name: String,
age: Number
})
</script>
<template>
<p>{{ name }} - {{ age }} років</p>
</template>Тепер дочірній компонент отримує:
name="Tim"age="28"
Навіщо потрібні props?
Props вирішують декілька завдань:
Передати дані від батька до дитини
Наприклад: текст кнопки, користувача, список товарів, налаштування компонента.
Робити компоненти універсальними
Один компонент - багато варіантів.
Створювати конфігурацію поведінки
Наприклад: <Modal :open="true" />.
Як оголошувати props у Vue 3?
Спосіб 1. Через <script setup> - сучасно та зручно
<script setup>
const props = defineProps({
title: String,
count: {
type: Number,
default: 0
},
isActive: Boolean
})
</script>Після цього title, count, isActive доступні в шаблоні.
Спосіб 2. Через Options API (старий стиль)
<script>
export default {
props: {
title: String,
count: {
type: Number,
default: 0
}
}
}
</script>Типи пропсів
Можна описувати:
Тип
title: StringТип + типове значення
count: { type: Number, default: 0 }Required (обов'язковий)
user: { type: Object, required: true }Валідація
age: {
type: Number,
validator: value => value > 0
}Не можна змінювати props усередині компонента
Це важливе правило:
неправильно:
props.count++правильно:
- створити локальну копію
або
- передавати подію
emitбатьку, щоб він оновив значення
Односторонній потік даних
Props ідуть тільки зверху вниз:
Parent → ChildЦе робить роботу застосунку передбачуваною та зменшує кількість багів.
Приклад: кнопка, що налаштовується через props
<script setup>
const props = defineProps({
label: String,
type: {
type: String,
default: "primary"
}
})
</script>
<template>
<button :class="`btn-${type}`">{{ label }}</button>
</template>Використання:
<BaseButton label="Save" type="success" />Підсумок (шпаргалка)
Props - це вхідні параметри компонента.
Вони дозволяють:
- передавати дані від батька до дитини,
- конфігурувати інтерфейс,
- робити компоненти універсальними.
У Vue 3 props оголошують через:
defineProps({ ... })Props не можна змінювати, але їх можна валідувати, робити обов'язковими та задавати їм значення за замовчуванням.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.