Как использовать слот в Svelte

Как использовать слот в Svelte. Изображение 1.

Svelte предоставляет множество способов взаимодействия компонентов друг с другом, включая реквизиты, слоты и т. д. Вам необходимо интегрировать слоты для создания гибких и многократно используемых компонентов в вашем приложении Svelte.

Что такое слоты в Svelte?

Слоты в фреймворке Svelte работают аналогично слотам в Vue. Они предоставляют способ передачи контента от родительского компонента к дочернему. С помощью слотов вы можете определять заполнители в шаблоне компонента, куда можно вставлять содержимое из родительского компонента.

Это содержимое может быть обычным текстом, HTML-разметкой или другим элементом Svelte. Работа со слотами позволяет создавать очень гибкие и настраиваемые компоненты, подходящие для различных целей.

Создайте базовые слоты

Чтобы создать слоты в Svelte, используйте компонент slot в шаблоне компонента. Слот — это заполнитель для содержимого, которое вы передаете из родительского элемента. По умолчанию в этом слоте будет отображаться любой контент, перемещенный в него.

Вот пример того, как создать базовый слот:

Это дочерний компонент

Приведенный выше блок кода показывает, что дочерний компонент использует слоты для получения содержимого из родительского компонента.

Чтобы передать содержимое из родительского компонента в дочерний компонент, вы сначала импортируете дочерний компонент в родительский компонент. Затем вместо использования самозакрывающегося тега для отображения дочернего элемента используйте открывающий и закрывающий тег. Наконец, в теге компонента напишите содержимое, которое вы хотите передать из родительского компонента в дочерний.

Например:

Это родительский компонент. Это сообщение от родительского компонента.

Помимо передачи содержимого от родительских компонентов к дочерним, вы можете предоставить в слоте резервный контент/контент по умолчанию. Это контент, который будет отображаться в слоте, если родительский компонент не передаст никакого контента.

Вот как вы можете использовать резервный контент:

Это дочерний компонент. Резервный контент.

Этот блок кода предоставляет текст «Резервный контент» в качестве резервного контента для слота дисплея, если родительский компонент не имеет контента.

Передача данных через слоты с помощью слота

Svelte позволяет передавать данные в слоты, используя реквизиты слотов. Вы используете реквизиты слота в ситуациях, когда хотите передать некоторые данные из дочернего компонента во включаемый контент.

Например:

Это дочерний компонент

В приведенном выше блоке кода показан компонент Svelte. В теге сценария вы объявляете переменную message и присваиваете текст «Hello Parent Component!» для этого. Вы также передаете переменную сообщения в свойство сообщения слота. Это делает данные сообщения доступными для родительского компонента, когда он вводит контент в это место.

Это родительский компонент. Дочерний компонент говорит: {message}

Синтаксис let:message позволяет родительскому компоненту получить доступ к свойству слота сообщения, предоставленному дочерним компонентом. Переменная сообщения тега div — это данные из свойства сообщения слота.

Обратите внимание, что вы не ограничены одним атрибутом слота, вы можете передавать несколько атрибутов слота по мере необходимости.

Это дочерний компонент

В корневом компоненте:

Это родительский компонент. Имя пользователя: {firstName} {lastName}.

Работа с именованными слотами

Вы можете использовать именованные слоты, если хотите переместить несколько слотов внутри компонента. Именование упрощает управление слотами, поскольку вы можете дать каждому слоту уникальное имя. С помощью именованных слотов вы можете создавать сложные компоненты с разной компоновкой.

Чтобы создать именованный слот, передайте атрибут name элементу slot:

Это дочерний компонент

Заголовки:

Нижний колонтитул:

В этом примере у вас есть два именованных слота: слоты верхнего и нижнего колонтитула. Используя это свойство слота, вы можете передавать контент в каждый слот из родительского компонента.

Например:

Это родительский компонент. Он будет передан в слот заголовка. Это будет передан в слот нижнего колонтитула.

Этот код показывает, как использовать атрибут slot для передачи содержимого в именованный слот. В первом теге span вы передаете атрибут slot со значением заголовка. Это гарантирует, что текст тега span появится в слоте заголовка. Аналогично, текст в теге span со значением атрибута нижнего колонтитула слота появится в слоте нижнего колонтитула.

Что такое переадресация слотов?

Переадресация слотов — это функция в Svelte, которая позволяет передавать контент из родительского компонента через оболочку в дочерний компонент. Это полезно в ситуациях, когда вы хотите переместить контент из несвязанных компонентов.

Вот пример того, как использовать переход слота: сначала создайте дочерний элемент:

Это дочерний компонент

Затем создайте окружающий элемент:

В этом блоке кода вы передаете слот с другим именем в слот сообщений дочернего компонента.

Затем в родительском компоненте напишите код:

Это родительский компонент Это из родительского компонента

В приведенной выше структуре содержимое «Это из родительского компонента» передается через компонент-оболочку непосредственно в дочерний компонент благодаря слоту WrapperMessage в окружающем компоненте.

В целом, слоты — это мощная функция в Svelte, позволяющая создавать многократно используемые и настраиваемые компоненты. Надеюсь, эта статья поможет вам узнать, как использовать слоты в Svelte.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *