QBreadcrumbs — это компонент библиотеки Quasar
Framework, предназначенный для отображения навигационных
цепочек, известных как «хлебные крошки». Они помогают пользователю
ориентироваться в структуре приложения и быстро возвращаться к
предыдущим уровням. Компонент тесно интегрирован с Vue.js и поддерживает
реактивность через привязку данных.
Ключевые свойства компонента:
:value — массив объектов, представляющих элементы
хлебных крошек. Каждый объект содержит как минимум поле
label и опционально icon и
to.separator — строка или HTML, определяющая разделитель
между элементами.dense — делает компонент более компактным.align — выравнивание хлебных крошек: left,
center или right.Простейший пример использования:
<q-breadcrumbs :value="breadcrumbs" separator="/">
</q-breadcrumbs>
<script>
export default {
data() {
return {
breadcrumbs: [
{ label: 'Главная', to: '/' },
{ label: 'Каталог', to: '/catalog' },
{ label: 'Товары', to: '/catalog/products' }
]
}
}
}
</script>
Каждый элемент массива value может содержать следующие
поля:
home).true,
навигация срабатывает только при точном совпадении пути.Пример с иконками и отключённым элементом:
<q-breadcrumbs :value="breadcrumbs" separator=">">
</q-breadcrumbs>
<script>
export default {
data() {
return {
breadcrumbs: [
{ label: 'Главная', icon: 'home', to: '/' },
{ label: 'Каталог', icon: 'list', to: '/catalog' },
{ label: 'Товары', disable: true }
]
}
}
}
</script>
Компонент QBreadcrumbs поддерживает слоты, что позволяет
полностью контролировать внешний вид каждого элемента:
item — слот для индивидуального
рендера каждого элемента хлебных крошек.separator — слот для кастомного
разделителя.Пример с кастомным элементом:
<q-breadcrumbs :value="breadcrumbs">
<template v-slot:item="props">
<q-btn
flat
round
dense
:label="props.item.label"
@click="goTo(props.item.to)"
/>
</template>
<template v-slot:separator>
<span style="margin: 0 4px;">→</span>
</template>
</q-breadcrumbs>
В этом примере каждый элемент рендерится как кнопка
QBtn, а разделитель заменён на стрелку с отступами.
Одним из преимуществ QBreadcrumbs является возможность
интеграции с Vue Router. Для этого используется поле
to, которое может содержать строку пути или объект
маршрута:
{
path: '/catalog/products',
name: 'products'
}
Если указано поле to, компонент автоматически создаёт
ссылку с помощью QRouteTab или стандартного тега
<a> при использовании router-link.
Пример навигации с объектом маршрута:
breadcrumbs: [
{ label: 'Главная', to: { name: 'home' } },
{ label: 'Каталог', to: { name: 'catalog' } },
{ label: 'Товары', disable: true }
]
Quasar позволяет настраивать внешний вид хлебных крошек через модификаторы:
QIcon.Пример с цветами:
<q-breadcrumbs :value="breadcrumbs" separator="/">
</q-breadcrumbs>
<script>
export default {
data() {
return {
breadcrumbs: [
{ label: 'Главная', color: 'primary', to: '/' },
{ label: 'Каталог', color: 'secondary', to: '/catalog' },
{ label: 'Товары', color: 'grey-7', disable: true }
]
}
}
}
</script>
QBreadcrumbs хорошо работает с реактивными данными.
Хлебные крошки можно формировать на основе текущего маршрута или
состояния приложения:
computed: {
breadcrumbs() {
const pathArray = this.$route.path.split('/').filter(p => p)
return pathArray.map((p, index) => ({
label: p.charAt(0).toUpperCase() + p.slice(1),
to: '/' + pathArray.slice(0, index + 1).join('/')
}))
}
}
Такой подход автоматически обновляет хлебные крошки при переходе по маршрутам, без необходимости ручного обновления массива.
Компонент QBreadcrumbs адаптивен и корректно
отображается на разных экранах. Для мобильных устройств можно
использовать:
overflow-x: auto, если элементов много.QBreadcrumbs предоставляет гибкий инструмент для
создания интуитивно понятной навигации, поддерживает кастомизацию через
слоты, динамическое формирование и интеграцию с Vue Router. Правильное
использование всех этих возможностей позволяет создавать
профессиональные интерфейсы с удобной структурой и визуальной
ясностью.