Базовый класс элемента, который управляет свойствами и атрибутами элемента и выполняет рендеринг шаблона lit-html.
Импорт
import { LitElement } from 'lit-element';
Подробности
Чтобы определить компонент, создайте подкласс LitElement и реализуйте метод render, который задаёт шаблон компонента. Определяйте свойства с помощью свойства properties или декоратора property.
Помечает этот класс как finalized в качестве оптимизации, гарантирующей, что он не будет без необходимости пытаться выполнить finalize.
Подробности
Обратите внимание, что имя этого свойства представляет собой строку, чтобы не нарушать оптимизации компилятора Closure JS. Дополнительные сведения см. в файле updating-element.ts.
Ссылка на метод базовой библиотеки, используемый для рендеринга DOM элемента. По умолчанию указывает на метод render из модуля shady-render библиотеки lit-html.
Подробности
Большинству пользователей никогда не потребуется обращаться к этому свойству.
Не следует путать это свойство с методом экземпляра render, который нужно переопределить, чтобы задать шаблон элемента.
Опытные пользователи, создающие новый базовый класс на основе LitElement, могут переопределить это свойство, указав пользовательский метод рендеринга с сигнатурой, соответствующей методу render из shady-render.
Возвращает Promise, который разрешается после завершения обновления элемента. Значение Promise — логическое значение true, если элемент завершил обновление, не вызвав нового обновления. Результат Promise — false, если свойство было задано внутри updated(). Если Promise отклонён, во время обновления было выброшено исключение.
Подробности
Чтобы дождаться завершения дополнительных асинхронных операций, переопределите метод _getUpdateComplete. Например, иногда полезно дождаться отображения элемента перед разрешением этого Promise. Для этого сначала дождитесь super._getUpdateComplete(), а затем любого последующего состояния.
Применяет стили к shadowRoot элемента, используя свойство styles. Если доступен shadowRoot.adoptedStyleSheets, стили применяются с его помощью; в противном случае используется запасной вариант. Если Shadow DOM полифиллен, ShadyCSS ограничивает область действия стилей и добавляет их в документ. Если Shadow DOM доступен, но adoptedStyleSheets недоступен, стили добавляются в конец shadowRoot, чтобы имитировать поведение, заданное спецификацией.
Возвращает узел, в который должен выполняться рендеринг элемента; по умолчанию создаёт и возвращает открытый shadowRoot. Реализуйте этот метод, чтобы настроить место рендеринга DOM элемента. Например, чтобы выполнять рендеринг в дочерние узлы элемента, верните this.
Позволяет выполнять super.disconnectedCallback() в расширениях, сохраняя возможность в будущем добавлять обратно совместимые функции, связанные с отключением элемента.
Непосредственно переопределять геттер updateComplete небезопасно из-за ограничения TypeScript: при целевом языке ES5 невозможно вызвать геттер суперкласса (например, super.updateComplete.then(...)) (https://github.com/microsoft/TypeScript/issues/338). Вместо этого следует переопределить данный метод. Например:
Выполняет инициализацию элемента. По умолчанию вызывает createRenderRoot для создания узла renderRoot элемента и сохраняет все предварительно заданные значения зарегистрированных свойств.
Вызывается при каждом обновлении для выполнения задач рендеринга. Этот метод может возвращать любое значение, допускающее рендеринг с помощью NodePart из lit-html, — обычно TemplateResult. Изменение свойств внутри этого метода не вызовет обновление элемента.
Запрашивает обновление, которое выполняется асинхронно. Этот метод следует вызывать, когда состояние элемента требует обновления, но изменение свойства его не вызвало. В этом случае не передавайте аргументы. Метод также следует вызывать при ручной реализации сеттера свойства. В этом случае передайте name свойства и oldValue, чтобы применить все настроенные параметры свойства. Возвращает Promise updateComplete, который разрешается после завершения обновления.
Параметры
name?
PropertyKey
(необязательно) имя свойства, инициирующего запрос
oldValue?
unknown
(необязательно) старое значение свойства, инициирующего запрос
Эта защищённая версия requestUpdate не обращается к Promise updateComplete и не возвращает его. Этот Promise можно переопределить, поэтому он недоступен для свободного использования.
Определяет, нужно ли вызывать update при запросе обновления элемента. По умолчанию этот метод всегда возвращает true, но его можно настроить, чтобы управлять условиями обновления.
Обновляет элемент. Этот метод отражает значения свойств в атрибутах и вызывает render для рендеринга DOM с помощью lit-html. Изменение свойств внутри этого метода не вызовет новое обновление.
Вызывается при каждом обновлении элемента. Реализуйте этот метод, чтобы выполнять действия после обновления с помощью DOM API, например переводить фокус на элемент.
Параметры
_changedProperties
Map<string | number | symbol, unknown>
Карта изменённых свойств с их старыми значениями
Подробности
Изменение свойств внутри этого метода вызовет повторное обновление элемента после завершения текущего цикла обновления.
Создаёт аксессор свойства в прототипе элемента, если он ещё не существует, и сохраняет для этого свойства PropertyDeclaration с указанными параметрами. Сеттер свойства вызывает параметр свойства hasChanged или использует строгое сравнение идентичности, чтобы определить, следует ли запросить обновление.
Этот метод можно переопределить для настройки свойств; однако при этом важно вызвать super.createProperty, чтобы свойство было настроено правильно. Внутри этого метода вызывается getPropertyDescriptor для получения устанавливаемого дескриптора. Чтобы настроить поведение свойств при чтении или записи, переопределите getPropertyDescriptor. Чтобы настроить параметры свойства, реализуйте createProperty следующим образом:
Возвращает дескриптор свойства, который следует определить для указанного именованного свойства. Если дескриптор не возвращён, свойство не станет аксессором. Например:
Возвращает параметры, связанные с указанным свойством. Эти параметры задаются с помощью PropertyDeclaration в объекте properties или декоратора @property и регистрируются в createProperty(...).
Параметры
name
PropertyKey
Подробности
Обратите внимание: этот метод следует считать «окончательным» и не переопределять. Чтобы настроить параметры конкретного свойства, переопределите createProperty.