Vue реализует API распространения контента, вдохновленный Черновиком спецификации веб-компонентов, используя элемент slot в качестве точек распространения контента.
- Контент рекламного места — контент, написанный в родительском шаблоне. Этот контент будет отображаться в выделенном заполнителе дочернего шаблона.
- Область компиляции — все в родительском шаблоне компилируется в родительской области; все в дочернем шаблоне компилируется в дочерней области.
- Запасной контент — контент, предоставленный дочерним шаблоном. Если родительский шаблон не предоставляет явное содержимое, то все, что написано в дочернем шаблоне, будет отображаться.
- Именованные слоты. В шаблоне клиента может быть несколько слотов. Чтобы однозначно идентифицировать их, нам нужно указать значение атрибута name.
- Слоты с заданной областью –механизм доступа к данным в дочерней области из родительского шаблона с помощью реквизитов слота.
- Динамические названия слотов
Понимание всех этих концепций немного сложно для новичков, если мы читаем и используем их на основе руководства или известного синтаксиса. Мы должны научиться использовать реальную проблему для решения.
💡Если вы хотите эффективно изучать JavaScript, читайте кодовую базу Vue. Если вы хотите эффективно изучить Vue, прочитайте Vuetify или аналогичную кодовую базу.
Сюжетная линия:
Предположим, нам нужно создать общий компонент с именем v-data-table. Как правило, табличный компонент должен предоставлять следующие функции.
- Принимать заголовки в качестве реквизита
- Принимать элементы (содержимое таблицы) в качестве реквизита
- Предоставьте правильно сформированную таблицу с необходимыми стилями в качестве лучших значений по умолчанию.
- Разрешить пользователям (разработчикам) настраивать определенные столбцы в соответствии со своими потребностями
Пункт № 4 «сложно» реализовать. С v-slot это будет проще простого.
В приведенной ниже таблице разработчик хочет настроить цвет текста столбца «Сообщение» в зависимости от его значения.
Строки 20–22 содержат сведения об именованном слоте, динамических названиях слотов и резервном содержимом — создайте один слот для каждого имени заголовка (столбец таблицы). Если пользователь не хочет настраивать столбец, он не предоставит слот в своем клиентском коде.
Строка 6–8 позволяет настроить один из столбцов «msg». Остальные столбцы будут отображаться на основе резервного содержимого.