Задать вопрос
@egyptForce

Как получить слоты в веб-компонентах?

Могу ли я как-нибудь получить все слоты в компоненте? По аналогии с Vue.js this.$slots

<my-paragraph><span>foo</span></my-paragraph>
<my-paragraph><span slot="foo">bar</span></my-paragraph>

<template>
  <slot name="foo"></slot>
  <slot></slot>
</template>


class MyParagraph extends HTMLElement {
  constructor() {
    super();
    
    this
      .attachShadow({mode: 'open'})
      .appendChild(
        document.querySelector('template').content.cloneNode(true)
      );
    
    console.log(this.slots); // undefined
  }
}

customElements.define('my-paragraph', MyParagraph)
spoiler
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
Решения вопроса 1
this.shadowRoot.querySelectorAll('slot')
А затем, у каждого слота - slot.assignedNodes()
Больше - здесь
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы