Хорошая практика и HTMLSlotElement.assign()Javascript

Форум по Javascript
Ответить
Anonymous
 Хорошая практика и HTMLSlotElement.assign()

Сообщение Anonymous »

TL;DR
Что лучше всего сделать в веб-компоненте, использующем динамически создаваемый для каждого из его прямых дочерних элементов? (Или ваше предложение, если пока нет четкого ответа)
  • Добавьте атрибут слота для каждого дочернего элемента и убедитесь, что слот имеет правильное имя.
  • Используйте метод HTMLSlotElement: Assign(), чтобы связать их, не чередуя их.
  • Другое?
Контекст и детали
В настоящее время я практикуюсь с веб-компонентами в личном проекте, но я хочу очистить его, чтобы использовать в своей работе и сделать доступным моему коллеге.
Одним из них является панель навигации: если вы нажмете одну кнопку в заголовке, появится приятная плавная анимация, и вы перейдете к другому контенту. Вот визуальное изображение:
визуальное изображение моего работающего компонента.
Каждый прямой дочерний элемент моего компонента считается вкладкой (или представлением) и размещается в ShadowDOM моего компонента (чтобы лучше контролировать макет, я заключаю каждый слот в контейнер).
Вот мой компонент, используемый в html-документе:

Код: Выделить всё


Tab 1


Tab 2


Tab 3


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

Код: Выделить всё

Test tab 1Test tab 2Test tab 3











Как вы можете видеть в сгенерированном ShadowDOM, чтобы связать дочерние элементы LightDOM и ShadowDOM , я добавляю им слот атрибута и имя
Затем мне пришлось добавить MutationObserver, чтобы предотвратить любые изменения в этих «защищенных» атрибутах (с предупреждением консоли). Это работает, но похоже на хак, а не на хороший способ что-то делать.
Я проверил в Интернете решение и нашел HTMLSlotElement.assign() (MDN: https://developer.mozilla.org/en-US/doc ... ent/assign)
Я разговаривал с некоторыми разработчиками, и они категорически отговаривают меня от его использования, заявляя, что «этот подход не является стандартным» или «слоты устроены таким образом».
Я искал, но не смог найти ни одного источника, который бы соответствовал тому, что они говорили. Есть ли какая-то конкретная причина использовать то или иное решение? Есть ли у вас предложения, основанные на вашем опыте?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ent-assign
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»