При работе с компонентами Vue, рано или поздно вам придется столкнуться с таким понятием как слот (slot). Давайте разберемся для чего это нужно и что это такое.
Особенно часто со слотами можно встретиться если вы будете работать с какими-то сторонними библиотеками, написанными на Vue. Часто там используется такой подход, что в компонентах используются слоты.
Давайте попробуем разобраться, что же такое slot.
Предположим, что у нас есть следующий родительский компонент:
<template>
<div>
<ChildComponent></ChildComponent>
</div>
</template>
<script>
import ChildComponent from "@/components/ChildComponent.vue";
export default {
name: "TestComponent.vue",
components: {ChildComponent},
data() {},
created() {},
methods: {},
computed: {}
}
</script>
В этот родительский компонент мы вставляем дочерний компонент ChildComponent и его содержимое достаточно простое.
<template>
<div>
<h1>Заголовок компонента</h1>
<slot></slot>
</div>
</template>
<script>
export default {
props: {},
data() {}
}
</script>
В нем есть новый для нас элемент <slot></slot>. Если посмотреть DOM разметку документа, то элемент slot просто никак не выводится.
Для чего же тогда этот элемент нам нужен?
Благодаря элементу slot мы формируем специальную область в дочернем компоненте, в которую мы можем что-то вставлять из родительского компонента.
Т.е. слот - это область для вставки данных из родительского компонента.
Как же мы можем вставить данные в эту область?
В нашем случае мы можем изменить вставку ChildComponent примерно так:
<ChildComponent>Текст</ChildComponent>
Т.е. между открывающим и закрывающими тэгами мы вставляем произвольный текст. И этот текст выводится в нашем компоненте на месте расположения элемента slot.
Кроме того, мы можем даже написать внутри html-разметку и она успешно будет выведена.
<ChildComponent><p>Текст</p></ChildComponent>
Это хорошо тем, что теперь в наших дочерних компонентах появилась программируемая область для вставки данных.
Теперь мы можем взять наш ChildComponent и использовать его много раз с разными значениями.
<ChildComponent><p>Текст 1</p></ChildComponent>
<ChildComponent><p>Текст 2</p></ChildComponent>
<ChildComponent><p>Текст 3</p></ChildComponent>
Теперь из родительского элемента мы можем легко задавать содержимое блока slot для дочерних компонентов.
Это основы работы со слотами во Vue, но здесь есть еще много особенностей, которые, надеюсь, мы с вами разберем в следующих уроках.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти