Функция проверки изменений, возвращающая true, если value отличается от oldValue. Этот метод используется по умолчанию для функции hasChanged свойства.
Импорт
import { notEqual } from 'lit-element/lib/updating-element.js';
Базовый класс элемента, управляющий свойствами и атрибутами элемента. При изменении свойств асинхронно вызывается метод update. Подклассы должны предоставлять этот метод для выполнения обновления отрисовки нужным образом.
Импорт
import { UpdatingElement } from 'lit-element/lib/updating-element.js';
Возвращает Promise, который разрешается после завершения обновления элемента. Значением Promise является логическое значение, равное true, если обновление элемента завершилось без запуска нового обновления. Результат Promise равен false, если свойство было задано внутри updated(). Если Promise отклонён, во время обновления было выброшено исключение.
Подробности
Чтобы дождаться завершения дополнительной асинхронной работы, переопределите метод _getUpdateComplete. Например, иногда полезно дождаться отображения элемента перед разрешением этого Promise. Для этого сначала дождитесь super._getUpdateComplete(), а затем любого последующего состояния.
Позволяет выполнять super.disconnectedCallback() в расширениях, сохраняя возможность в будущем добавлять новые функции без нарушения совместимости при отключении элемента.
Непосредственно переопределять геттер updateComplete небезопасно из-за ограничения TypeScript: при целевом языке ES5 невозможно вызвать геттер суперкласса (например, super.updateComplete.then(...)) (https://github.com/microsoft/TypeScript/issues/338). Вместо этого следует переопределить этот метод. Например:
Выполняет обновление элемента. Обратите внимание: если во время обновления выбрасывается исключение, firstUpdated и updated вызваны не будут.
Подробности
Этот метод можно переопределить, чтобы изменить время выполнения обновлений. При переопределении этого метода необходимо вызвать super.performUpdate().
Например, чтобы запланировать обновления непосредственно перед следующим кадром:
Запрашивает обновление, которое выполняется асинхронно. Этот метод следует вызывать, когда элемент должен обновиться на основании состояния, изменение которого не вызвано установкой свойства. В этом случае не передавайте аргументы. Его также следует вызывать при ручной реализации сеттера свойства. В этом случае передайте свойство name и oldValue, чтобы учесть все настроенные параметры свойства. Возвращает Promise updateComplete, который разрешается после завершения обновления.
Параметры
name?
PropertyKey
(необязательно) имя свойства, вызвавшего запрос
oldValue?
unknown
(необязательно) старое значение свойства, вызвавшего запрос
Эта защищённая версия requestUpdate не обращается к Promise updateComplete и не возвращает его. Этот Promise можно переопределить, поэтому к нему нельзя обращаться без ограничений.
Определяет, следует ли вызывать update при запросе обновления элемента. По умолчанию этот метод всегда возвращает true, однако его можно настроить, чтобы управлять моментом обновления.
Обновляет элемент. Этот метод отражает значения свойств в атрибутах. Его можно переопределить, чтобы отрисовывать DOM элемента и поддерживать его в актуальном состоянии. Изменение свойств внутри этого метода не приведёт к повторному обновлению.
Вызывается после каждого обновления элемента. Реализуйте этот метод, чтобы выполнять задачи после обновления с помощью DOM API, например устанавливать фокус на элементе.
Параметры
_changedProperties
Map<string | number | symbol, unknown>
Карта изменённых свойств с их старыми значениями
Подробности
Изменение свойств внутри этого метода приведёт к повторному обновлению элемента после завершения текущего цикла обновления.
Создаёт аксессор свойства в прототипе элемента, если он ещё не существует, и сохраняет объявление PropertyDeclaration для свойства с указанными параметрами. Сеттер свойства вызывает параметр свойства hasChanged или использует строгое сравнение идентичности, чтобы определить, следует ли запрашивать обновление.
Этот метод можно переопределить для настройки свойств; однако при этом важно вызвать super.createProperty, чтобы свойство было настроено правильно. Этот метод внутри вызывает getPropertyDescriptor для получения дескриптора, который нужно установить. Чтобы настроить поведение свойств при чтении или записи, переопределите getPropertyDescriptor. Чтобы настроить параметры свойства, реализуйте createProperty следующим образом:
Возвращает дескриптор свойства, который следует определить для указанного свойства. Если дескриптор не возвращён, свойство не станет аксессором. Например,
Возвращает параметры свойства, связанные с указанным свойством. Эти параметры задаются с помощью PropertyDeclaration через объект properties или декоратор @property и регистрируются в createProperty(...).
Параметры
name
PropertyKey
Подробности
Обратите внимание: этот метод следует считать «финальным» и не переопределять. Чтобы настроить параметры конкретного свойства, переопределите createProperty.
Указывает, будет ли свойство представлено наблюдаемым атрибутом и каким образом. Если значение равно false, свойство не добавляется в observedAttributes. Если значение равно true или отсутствует, наблюдается имя свойства в нижнем регистре (например, fooBar становится foobar). Если задана строка, наблюдается это строковое значение (например, attribute: 'foo-bar').
Указывает, как преобразовывать атрибут в свойство и обратно. Если это значение является функцией, она используется для преобразования значения атрибута в значение свойства. Если это объект, он может содержать ключи fromAttribute и toAttribute. Если функция toAttribute не указана, а reflect задано как true, значение свойства напрямую устанавливается в атрибут. Если преобразователь converter не указан, используется преобразователь по умолчанию; он поддерживает Boolean, String, Number, Object и Array. Обратите внимание: при изменении свойства и обновлении атрибута с помощью преобразователя последующее изменение атрибута не приводит к повторному обновлению свойства, и наоборот.
Указывает, будет ли создан аксессор для этого свойства. По умолчанию для свойства создаётся аксессор, который запрашивает обновление при установке значения. Если этот флаг равен true, аксессор не создаётся, и пользователь должен сам вызывать this.requestUpdate(propertyName, oldValue) для запроса обновления при изменении свойства.
Указывает, следует ли отражать свойство в атрибуте. Если true, при установке свойства устанавливается атрибут с именем, определённым согласно правилам параметра свойства attribute, а значение свойства преобразуется согласно правилам параметра свойства converter.
Указывает тип свойства. Используется только как подсказка для converter, определяющая способ преобразования атрибута в свойство и обратно.
hasChanged(value, oldValue): boolean
Функция, определяющая, следует ли считать свойство изменившимся при установке значения. Функция должна принимать newValue и oldValue и возвращать true, если необходимо запросить обновление.
Карта свойств и параметров PropertyDeclaration. Для каждого свойства создаётся аксессор, а само свойство обрабатывается согласно параметрам PropertyDeclaration.
Импорт
import { PropertyDeclarations } from 'lit-element/lib/updating-element.js';