Spec-Zone.ru › Lit 2

Директивы

директива asyncAppendИсточник

Директива, которая отображает элементы асинхронного итерируемого объекта[1], добавляя новые значения после предыдущих, подобно встроенной поддержке итерируемых объектов. Эту директиву можно использовать только в дочерних выражениях.

Импорт

import { asyncAppend } from 'lit/directives/async-append.js';

Сигнатура

asyncAppend(value, _mapper?): DirectiveResult<AsyncAppendDirective>

Параметры

value
AsyncIterable<unknown>

Асинхронный итерируемый объект

_mapper?
(v: unknown, index?: number) => unknown

Подробности

Асинхронные итерируемые объекты — это объекты с методом [Symbol.asyncIterator], который возвращает итератор, чей метод next() возвращает Promise. Когда становится доступно новое значение, Promise разрешается, и значение добавляется в Part, управляемый директивой. Если для Part задано другое значение, не являющееся этой директивой, прослушивание итерируемого объекта прекращается, и новые значения не будут записываться в Part. [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of

класс AsyncAppendDirectiveИсточник

Абстрактный базовый класс Directive, метод disconnected которого будет вызван, когда содержащий директиву Part очищается в результате повторного рендеринга или когда пользователь вызывает part.setConnected(false) для Part, ранее отрендеренного с этой директивой (например, когда LitElement отключается от DOM).

Импорт

import { AsyncAppendDirective } from 'lit/directives/async-append.js';

Подробности

Если впоследствии для содержащего Part вызывается part.setConnected(true), метод reconnected директивы будет вызван до её следующих обратных вызовов update/render. При реализации disconnected для совместимости с повторным подключением также следует реализовать reconnected. Обратите внимание, что обновления могут происходить, пока директива отключена. Поэтому директивам обычно следует проверять флаг this.isConnected во время render/update, чтобы определить, безопасно ли подписываться на ресурсы, которые могут препятствовать сборке мусора.

Методы и свойства

new AsyncAppendDirective(partInfo): AsyncAppendDirective

Параметры
partInfo
PartInfo

isConnected: booleanИсточник

Состояние подключения этой директивы.

commitValue(value, index): voidИсточник

Параметры
value
unknown
index
number

disconnected(): voidИсточник

Пользовательские обратные вызовы для реализации логики освобождения ресурсов и подписок, которые могла сохранить эта директива. Поскольку директивы могут подключаться повторно, для восстановления рабочего состояния директивы до следующего рендеринга также следует реализовать reconnected.

reconnected(): voidИсточник

render(value, _mapper?): symbolИсточник

Параметры
value
AsyncIterable<T>
_mapper?
Mapper<T>

setValue(value): voidИсточник

Задаёт значение Part директивы вне обычного жизненного цикла update/render директивы.

Параметры
value
unknown

Задаваемое значение

Подробности

Этот метод не следует вызывать синхронно из update или render директивы.

update(part, params): undefined | noChangeИсточник

Параметры
part
ChildPart
params
[value, _mapper]

директива asyncReplaceИсточник

Директива, которая отображает элементы асинхронного итерируемого объекта[1], заменяя предыдущие значения новыми, так что одновременно отображается только одно значение. Эту директиву можно использовать в выражении любого типа.

Импорт

import { asyncReplace } from 'lit/directives/async-replace.js';

Сигнатура

asyncReplace(value, _mapper?): DirectiveResult<AsyncReplaceDirective>

Параметры

value
AsyncIterable<unknown>

Асинхронный итерируемый объект

_mapper?
Mapper<unknown>

Подробности

Асинхронные итерируемые объекты — это объекты с методом [Symbol.asyncIterator], который возвращает итератор, чей метод next() возвращает Promise. Когда становится доступно новое значение, Promise разрешается, и значение отображается в Part, управляемом директивой. Если для Part задано другое значение, не являющееся этой директивой, прослушивание итерируемого объекта прекращается, и новые значения не будут записываться в Part. [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of

класс AsyncReplaceDirectiveИсточник

Абстрактный базовый класс Directive, метод disconnected которого будет вызван, когда содержащий директиву Part очищается в результате повторного рендеринга или когда пользователь вызывает part.setConnected(false) для Part, ранее отрендеренного с этой директивой (например, когда LitElement отключается от DOM).

Импорт

import { AsyncReplaceDirective } from 'lit/directives/async-replace.js';

Подробности

Если впоследствии для содержащего Part вызывается part.setConnected(true), метод reconnected директивы будет вызван до её следующих обратных вызовов update/render. При реализации disconnected для совместимости с повторным подключением также следует реализовать reconnected. Обратите внимание, что обновления могут происходить, пока директива отключена. Поэтому директивам обычно следует проверять флаг this.isConnected во время render/update, чтобы определить, безопасно ли подписываться на ресурсы, которые могут препятствовать сборке мусора.

Методы и свойства

new AsyncReplaceDirective(_partInfo): AsyncReplaceDirective

Параметры
_partInfo
PartInfo

isConnected: booleanИсточник

Состояние подключения этой директивы.

commitValue(value, _index): voidИсточник

Параметры
value
unknown
_index
number

disconnected(): voidИсточник

Пользовательские обратные вызовы для реализации логики освобождения ресурсов и подписок, которые могла сохранить эта директива. Поскольку директивы могут подключаться повторно, для восстановления рабочего состояния директивы до следующего рендеринга также следует реализовать reconnected.

reconnected(): voidИсточник

render(value, _mapper?): symbolИсточник

Параметры
value
AsyncIterable<T>
_mapper?
Mapper<T>

setValue(value): voidИсточник

Задаёт значение Part директивы вне обычного жизненного цикла update/render директивы.

Параметры
value
unknown

Задаваемое значение

Подробности

Этот метод не следует вызывать синхронно из update или render директивы.

update(_part, __namedParameters): undefined | noChangeИсточник

Параметры
_part
ChildPart
__namedParameters
[value, _mapper]

директива cacheИсточник

Позволяет быстро переключаться между несколькими шаблонами, кешируя узлы DOM и экземпляры TemplateInstance, созданные этими шаблонами.

Импорт

import { cache } from 'lit/directives/cache.js';

Сигнатура

cache(v): DirectiveResult<CacheDirective>

Параметры

v
unknown

Подробности

Пример:

let checked = false;
html`
  ${cache(checked ? html`input is checked` : html`input is not checked`)}
`

класс CacheDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует унаследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { CacheDirective } from 'lit/directives/cache.js';

Методы и свойства

new CacheDirective(partInfo): CacheDirective

Параметры
partInfo
PartInfo

render(v): Array<unknown>Источник

Параметры
v
unknown

update(containerPart, __namedParameters): Array<unknown>Источник

Параметры
containerPart
ChildPart
__namedParameters
[v]

директива chooseИсточник

Выбирает и вычисляет функцию шаблона из списка на основе соответствия заданного value одному из вариантов.

Импорт

import { choose } from 'lit/directives/choose.js';

Сигнатура

choose(value, cases, defaultCase?): undefined | V

Параметры

value
T
cases
Array<[T, () => V]>
defaultCase?
() => V

Подробности

Варианты задаются в виде [caseValue, func]. value сопоставляется с caseValue с помощью строгого равенства. Выбирается первое совпадение. Значения вариантов могут быть любого типа, включая примитивы, объекты и символы. Это похоже на оператор switch, но представлено в виде выражения и не допускает перехода к следующему варианту.

директива classMapИсточник

Директива для применения динамических CSS-классов.

Импорт

import { classMap } from 'lit/directives/class-map.js';

Сигнатура

classMap(classInfo): DirectiveResult<ClassMapDirective>

Параметры

classInfo
ClassInfo

Подробности

Эту директиву необходимо использовать в атрибуте class, и она должна быть единственной частью этого атрибута. Для каждого свойства аргумента classInfo она добавляет имя свойства в classList элемента, если значение свойства истинно; если значение свойства ложно, имя свойства удаляется из class элемента. Например, {foo: bar} применяет класс foo, если значение bar истинно.

класс ClassMapDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует унаследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { ClassMapDirective } from 'lit/directives/class-map.js';

Методы и свойства

new ClassMapDirective(partInfo): ClassMapDirective

Параметры
partInfo
PartInfo

render(classInfo): stringИсточник

Параметры
classInfo
ClassInfo

update(part, __namedParameters): string | noChangeИсточник

Параметры
part
AttributePart
__namedParameters
[classInfo]

тип ClassInfoИсточник

Набор пар «ключ—значение», где имена классов сопоставлены с истинными значениями.

Импорт

import { ClassInfo } from 'lit/directives/class-map.js';

директива guardИсточник

Предотвращает повторный рендеринг функции шаблона, пока не изменится одно значение или массив значений.

Импорт

import { guard } from 'lit/directives/guard.js';

Сигнатура

guard(_value, f): DirectiveResult<GuardDirective>

Параметры

_value
unknown
f
() => unknown

функция шаблона

Подробности

Значения сравниваются с предыдущими с помощью строгого равенства (===), поэтому проверка не обнаруживает изменения вложенных свойств объектов или массивов. Для значений-массивов каждый элемент сравнивается с предыдущим значением по тому же индексу с помощью строгого равенства. Вложенные массивы также проверяются только на строгое равенство. Пример:

html`
  <div>
    ${guard([user.id, company.id], () => html`...`)}
  </div>
`

В этом случае шаблон повторно отрисовывается, только если изменится user.id или company.id. guard() полезна при использовании шаблонов проектирования с неизменяемыми данными: она предотвращает выполнение затратных операций до обновления данных. Пример:

html`
  <div>
    ${guard([immutableItems], () => immutableItems.map(i => html`${i}`))}
  </div>
`

В этом случае элементы отображаются из массива только при изменении ссылки на массив.

класс GuardDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует унаследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { GuardDirective } from 'lit/directives/guard.js';

Методы и свойства

new GuardDirective(_partInfo): GuardDirective

Параметры
_partInfo
PartInfo

render(_value, f): unknownИсточник

Параметры
_value
unknown
f
() => unknown

update(_part, __namedParameters): unknownИсточник

Параметры
_part
Part
__namedParameters
[_value, f]

директива ifDefinedИсточник

Для AttributeParts задаёт атрибут, если значение определено, и удаляет его, если значение равно undefined.

Импорт

import { ifDefined } from 'lit/directives/if-defined.js';

Сигнатура

ifDefined(value): nothing | NonNullable<T>

Параметры

value
T

Подробности

Для других типов Part эта директива ничего не делает.

директива joinИсточник

Возвращает итерируемый объект, содержащий значения из items, разделённые значением joiner.

Импорт

import { join } from 'lit/directives/join.js';

Сигнатура

join(items, joiner): Iterable<I | J>

Параметры

items
undefined | Iterable<I>
joiner
(index: number) => J

директива keyedИсточник

Связывает отображаемое значение с уникальным ключом. При изменении ключа предыдущий DOM удаляется и очищается до отображения следующего значения, даже если значение, например шаблон, остаётся тем же.

Импорт

import { keyed } from 'lit/directives/keyed.js';

Сигнатура

keyed(k, v): DirectiveResult<Keyed>

Параметры

k
unknown
v
unknown

Подробности

Это полезно для принудительного повторного рендеринга компонентов с состоянием или при работе с кодом, который предполагает, что новые данные создают новые элементы HTML, например, при использовании некоторых методов анимации.

класс KeyedИсточник

Базовый класс для создания пользовательских директив. Пользователям следует унаследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { Keyed } from 'lit/directives/keyed.js';

Методы и свойства

new Keyed(_partInfo): Keyed

Параметры
_partInfo
PartInfo

key: unknownИсточник

render(k, v): unknownИсточник

Параметры
k
unknown
v
unknown

update(part, __namedParameters): unknownИсточник

Параметры
part
ChildPart
__namedParameters
[k, v]

директива liveИсточник

При определении необходимости обновить значение сравнивает значения привязки с текущими значениями DOM, а не с ранее привязанными значениями.

Импорт

import { live } from 'lit/directives/live.js';

Сигнатура

live(value): DirectiveResult<LiveDirective>

Параметры

value
unknown

Подробности

Это полезно в случаях, когда значение DOM может измениться вне lit-html, например при привязке к свойству value элемента <input>, к тексту элемента с редактируемым содержимым или к пользовательскому элементу, который изменяет собственные свойства или атрибуты. В таких случаях, если значение DOM изменится, а значение, заданное с помощью привязок lit-html, останется прежним, lit-html не узнает о необходимости обновить значение DOM и оставит его без изменений. Если вам нужно другое поведение — если вы хотите перезаписывать значение DOM привязанным значением в любом случае, — используйте директиву live():

html`<input .value=${live(x)}>`

live() выполняет проверку строгого равенства с текущим значением DOM и ничего не делает, если новое значение совпадает с текущим. Это означает, что live() не следует использовать, если привязка приводит к преобразованию типа. При использовании live() с привязкой атрибута передавайте только строки, иначе привязка будет обновляться при каждом рендеринге.

класс LiveDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует наследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { LiveDirective } from 'lit/directives/live.js';

Методы и свойства

new LiveDirective(partInfo): LiveDirective

Параметры
partInfo
PartInfo

render(value): unknownИсточник

Параметры
value
unknown

update(part, __namedParameters): unknownИсточник

Параметры
part
AttributePart
__namedParameters
[value]

директива mapИсточник

Возвращает итерируемый объект, содержащий результат вызова f(value) для каждого значения в items.

Импорт

import { map } from 'lit/directives/map.js';

Сигнатура

map(items, f): Generator<unknown, void, unknown>

Параметры

items
undefined | Iterable<T>
f
(value: T, index: number) => unknown

директива rangeИсточник

Возвращает итерируемый объект с целыми числами от start до end (не включая его), увеличивая значение на step.

Импорт

import { range } from 'lit/directives/range.js';

Сигнатура

range(end): Iterable<number>

Параметры

end
number

Подробности

Если start не задан, диапазон начинается с 0. Значение step по умолчанию равно 1.

директива createRefИсточник

Создает новый объект Ref — контейнер для ссылки на элемент.

Импорт

import { createRef } from 'lit/directives/ref.js';

Сигнатура

createRef(): Ref<T>

директива refИсточник

Задает значение объекта Ref или вызывает обратный вызов ref с элементом, к которому он привязан.

Импорт

import { ref } from 'lit/directives/ref.js';

Сигнатура

ref(_ref): DirectiveResult<RefDirective>

Параметры

_ref
RefOrCallback

Подробности

Объект Ref служит контейнером для ссылки на элемент. Обратный вызов ref — это функция, принимающая элемент в качестве единственного аргумента. Во время рендеринга директива ref задает значение объекта Ref или вызывает обратный вызов ref, если связанный элемент изменился. Примечание. Если обратный вызов ref при последующем рендеринге привязывается к другой позиции элемента или удаляется, сначала он будет вызван с аргументом undefined, а затем еще раз — с новым элементом, для которого он был отрендерен (если такой есть).

// Using Ref object
const inputRef = createRef();
render(html`<input ${ref(inputRef)}>`, container);
inputRef.value.focus();
// Using callback
const callback = (inputElement) => inputElement.focus();
render(html`<input ${ref(callback)}>`, container);

класс RefИсточник

Объект, хранящий значение ссылки.

Импорт

import { Ref } from 'lit/directives/ref.js';

Методы и свойства

new Ref(): Ref<T>

readonly value?: TИсточник

Текущее значение Element для ссылки или undefined, если ссылка больше не отрендерена.

класс RefDirectiveИсточник

Абстрактный базовый класс Directive, метод disconnected которого будет вызван, когда содержащая директиву часть будет очищена в результате повторного рендеринга или когда пользователь вызовет part.setConnected(false) для части, ранее отрендеренной с этой директивой (например, при отключении LitElement от DOM).

Импорт

import { RefDirective } from 'lit/directives/ref.js';

Подробности

Если впоследствии для содержащей части будет вызван part.setConnected(true), метод reconnected директивы будет вызван до ее следующих обратных вызовов update/render. При реализации disconnected также следует реализовать reconnected, чтобы обеспечить совместимость с повторным подключением. Обратите внимание, что обновления могут происходить, пока директива отключена. Поэтому во время render/update директивам обычно следует проверять флаг this.isConnected, чтобы определить, безопасно ли подписываться на ресурсы, которые могут помешать сборке мусора.

Методы и свойства

new RefDirective(_partInfo): RefDirective

Параметры
_partInfo
PartInfo

isConnected: booleanИсточник

Состояние подключения этой директивы.

disconnected(): voidИсточник

Обратные вызовы пользователя для реализации логики освобождения ресурсов/подписок, которые могла удерживать эта директива. Поскольку директивы могут подключаться повторно, следует также реализовать reconnected, чтобы восстановить рабочее состояние директивы до следующего рендеринга.

reconnected(): voidИсточник

render(_ref): symbolИсточник

Параметры
_ref
RefOrCallback

setValue(value): voidИсточник

Задает значение Part директивы вне обычного жизненного цикла update/render директивы.

Параметры
value
unknown

Задаваемое значение

Подробности

Этот метод не следует вызывать синхронно из update или render директивы.

update(part, __namedParameters): symbolИсточник

Параметры
part
ElementPart
__namedParameters
[_ref]

тип RefOrCallbackИсточник

Импорт

import { RefOrCallback } from 'lit/directives/ref.js';

Тип

Ref | (el: Element | undefined) => void

директива repeatИсточник

Директива, которая повторяет последовательность значений (обычно TemplateResults), сформированных из итерируемого объекта, и эффективно обновляет эти элементы при изменении итерируемого объекта на основе предоставленных пользователем keys, связанных с каждым элементом.

Импорт

import { repeat } from 'lit/directives/repeat.js';

Сигнатура

repeat(items, keyFnOrTemplate, template?): unknown

Параметры

items
Iterable<T>
keyFnOrTemplate
KeyFn<T> | ItemTemplate<T>
template?
ItemTemplate<T>

Подробности

Обратите внимание: если задан keyFn, поддерживается строгое соответствие ключей элементам DOM: при необходимости существующий DOM для заданного ключа перемещается на новую позицию, а DOM никогда не переиспользуется для значений с другими ключами (для новых ключей всегда создается новый DOM). Обычно это наиболее эффективный способ использования repeat, поскольку при вставке и удалении он выполняет минимум лишней работы. keyFn принимает два параметра — элемент и его индекс — и возвращает уникальное значение ключа.

html`
  <ol>
    ${repeat(this.items, (item) => item.id, (item, index) => {
      return html`<li>${index}: ${item.name}</li>`;
    })}
  </ol>
`

Важно: если задан keyFn, ключи должны быть уникальными для всех элементов в одном вызове repeat. Поведение при наличии двух или более элементов с одинаковым ключом не определено. Если keyFn не задан, эта директива работает аналогично отображению элементов в значения, и DOM может использоваться повторно для других элементов.

класс RepeatDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует наследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { RepeatDirective } from 'lit/directives/repeat.js';

Методы и свойства

new RepeatDirective(partInfo): RepeatDirective

Параметры
partInfo
PartInfo

render(items, template): Array<unknown>Источник

Параметры
items
Iterable<T>
template
ItemTemplate<T>

update(containerPart, __namedParameters): Array<unknown> | noChangeИсточник

Параметры
containerPart
ChildPart
__namedParameters
[Iterable<T>, KeyFn<T> | ItemTemplate<T>, ItemTemplate<T>]

тип ItemTemplateИсточник

Импорт

import { ItemTemplate } from 'lit/directives/repeat.js';

Тип

(item: T, index: number) => unknown

тип KeyFnИсточник

Импорт

import { KeyFn } from 'lit/directives/repeat.js';

Тип

(item: T, index: number) => unknown

тип RepeatDirectiveFnИсточник

Импорт

import { RepeatDirectiveFn } from 'lit/directives/repeat.js';

Сигнатура

RepeatDirectiveFn(items, keyFnOrTemplate, template?): unknown

Параметры

items
Iterable<T>
keyFnOrTemplate
KeyFn<T> | ItemTemplate<T>
template?
ItemTemplate<T>

директива styleMapИсточник

Директива, применяющая CSS-свойства к элементу.

Импорт

import { styleMap } from 'lit/directives/style-map.js';

Сигнатура

styleMap(styleInfo): DirectiveResult<StyleMapDirective>

Параметры

styleInfo
Readonly<StyleInfo>

Подробности

styleMap можно использовать только в атрибуте style, и это должно быть единственное выражение в атрибуте. Директива берет имена свойств из объекта styleInfo и добавляет их во встроенный стиль элемента. Имена с дефисами (-) считаются допустимыми именами CSS-свойств и задаются в объекте style элемента с помощью setProperty(). Имена без дефисов считаются именами свойств JavaScript в camelCase и задаются в объекте style элемента путем присваивания свойства, что позволяет объекту style преобразовывать имена в стиле JavaScript в имена CSS-свойств. Например, styleMap({backgroundColor: 'red', 'border-top': '5px', '--size': '0'}) задает свойства background-color, border-top и --size.

класс StyleMapDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует наследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { StyleMapDirective } from 'lit/directives/style-map.js';

Методы и свойства

new StyleMapDirective(partInfo): StyleMapDirective

Параметры
partInfo
PartInfo

render(styleInfo): stringИсточник

Параметры
styleInfo
Readonly<StyleInfo>

update(part, __namedParameters): string | noChangeИсточник

Параметры
part
AttributePart
__namedParameters
[styleInfo]

тип StyleInfoИсточник

Набор пар «ключ-значение» для CSS-свойств и их значений.

Импорт

import { StyleInfo } from 'lit/directives/style-map.js';

Подробности

Ключом должна быть либо строка с допустимым именем CSS-свойства, например 'background-color', либо допустимое имя свойства CSSStyleDeclaration в camelCase в JavaScript, например backgroundColor.

директива templateContentИсточник

Рендерит содержимое элемента template как HTML.

Импорт

import { templateContent } from 'lit/directives/template-content.js';

Сигнатура

templateContent(template): DirectiveResult<TemplateContentDirective>

Параметры

template
HTMLTemplateElement

Подробности

Обратите внимание: шаблон должен контролироваться разработчиком, а не пользователем. Рендеринг шаблона, контролируемого пользователем, с помощью этой директивы может привести к уязвимостям межсайтового скриптинга.

класс TemplateContentDirectiveИсточник

Базовый класс для создания пользовательских директив. Пользователям следует наследовать этот класс, реализовать render и/или update, а затем передать подкласс в directive.

Импорт

import { TemplateContentDirective } from 'lit/directives/template-content.js';

Методы и свойства

new TemplateContentDirective(partInfo): TemplateContentDirective

Параметры
partInfo
PartInfo

render(template): DocumentFragment | noChangeИсточник

Параметры
template
HTMLTemplateElement

update(_part, props): unknownИсточник

Параметры
_part
Part
props
Array<unknown>

директива unsafeHTMLИсточник

Рендерит результат как HTML, а не как текст.

Импорт

import { unsafeHTML } from 'lit/directives/unsafe-html.js';

Сигнатура

unsafeHTML(value): DirectiveResult<UnsafeHTMLDirective>

Параметры

value
undefined | null | string | noChange | nothing

Подробности

Значения undefined, null и nothing приведут к тому, что ничего не будет отрисовано (пустая строка). Обратите внимание: это небезопасно использовать с пользовательскими данными, которые не были очищены или экранированы, поскольку это может привести к уязвимостям межсайтового скриптинга.

класс UnsafeHTMLDirectiveИсходный код

Базовый класс для создания пользовательских директив. Пользователям следует унаследовать этот класс, реализовать render и/или update, а затем передать его подкласс в directive.

Импорт

import { UnsafeHTMLDirective } from 'lit/directives/unsafe-html.js';

Методы и свойства

new UnsafeHTMLDirective(partInfo): UnsafeHTMLDirective

Параметры
partInfo
PartInfo

static directiveName: stringИсходный код

static resultType: numberИсходный код

render(value): undefined | null | noChange | nothing | TemplateResult<2 | 1>Исходный код

Параметры
value
undefined | null | string | noChange | nothing

update(_part, props): unknownИсходный код

Параметры
_part
Part
props
Array<unknown>

директива unsafeSVGИсходный код

Отрисовывает результат как SVG, а не как текст.

Импорт

import { unsafeSVG } from 'lit/directives/unsafe-svg.js';

Сигнатура

unsafeSVG(value): DirectiveResult<UnsafeSVGDirective>

Параметры

value
undefined | null | string | noChange | nothing

Подробности

Значения undefined, null и nothing приведут к тому, что ничего не будет отрисовано (пустая строка). Обратите внимание: это небезопасно использовать с пользовательскими данными, которые не были очищены или экранированы, поскольку это может привести к уязвимостям межсайтового скриптинга.

класс UnsafeSVGDirectiveИсходный код

Базовый класс для создания пользовательских директив. Пользователям следует унаследовать этот класс, реализовать render и/или update, а затем передать его подкласс в directive.

Импорт

import { UnsafeSVGDirective } from 'lit/directives/unsafe-svg.js';

Методы и свойства

new UnsafeSVGDirective(partInfo): UnsafeSVGDirective

Параметры
partInfo
PartInfo

static directiveName: stringИсходный код

static resultType: numberИсходный код

render(value): undefined | null | noChange | nothing | TemplateResult<2 | 1>Исходный код

Параметры
value
undefined | null | string | noChange | nothing

update(_part, props): unknownИсходный код

Параметры
_part
Part
props
Array<unknown>

директива untilИсходный код

Отрисовывает в Part одно из ряда значений, включая Promise.

Импорт

import { until } from 'lit/directives/until.js';

Сигнатура

until(values): DirectiveResult<UntilDirective>

Параметры

values
Array<unknown>

Подробности

Значения отрисовываются в порядке приоритета: первый аргумент имеет наивысший приоритет, а последний — наименьший. Если значение представляет собой Promise, значения с низким приоритетом будут отрисовываться до его разрешения. Приоритет значений можно использовать для создания содержимого-заполнителя для асинхронных данных. Например, Promise с ожидаемым содержимым может быть первым аргументом с наивысшим приоритетом, а шаблон индикатора загрузки non_promise — вторым аргументом с более низким приоритетом. Индикатор загрузки отобразится сразу, а основное содержимое — после разрешения Promise. Пример:

const content = fetch('./content.txt').then(r => r.text());
html`${until(content, html`<span>Loading...</span>`)}`

класс UntilDirectiveИсходный код

Абстрактный базовый класс Directive, метод disconnected которого вызывается, когда содержащий директиву Part очищается в результате повторной отрисовки или когда пользователь вызывает part.setConnected(false) для Part, ранее отрисованного с этой директивой (например, когда LitElement отсоединяется от DOM).

Импорт

import { UntilDirective } from 'lit/directives/until.js';

Подробности

Если впоследствии для содержащего Part вызывается part.setConnected(true), метод reconnected директивы будет вызван перед следующими обратными вызовами update/render. При реализации disconnected также следует реализовать reconnected, чтобы обеспечить корректную работу при повторном подключении. Обратите внимание, что обновления могут происходить, пока директива отключена. Поэтому директивам обычно следует проверять флаг this.isConnected при отрисовке/обновлении, чтобы определить, безопасно ли подписываться на ресурсы, которые могут препятствовать сборке мусора.

Методы и свойства

new UntilDirective(_partInfo): UntilDirective

Параметры
_partInfo
PartInfo

isConnected: booleanИсходный код

Состояние подключения этой директивы.

disconnected(): voidИсходный код

Пользовательские обратные вызовы для реализации логики освобождения ресурсов/подписок, которые могла сохранить эта директива. Поскольку директивы также могут подключаться повторно, следует также реализовать reconnected, чтобы восстановить рабочее состояние директивы перед следующей отрисовкой.

reconnected(): voidИсходный код

render(args): unknownИсходный код

Параметры
args
Array<unknown>

setValue(value): voidИсходный код

Задает значение Part директивы вне обычного жизненного цикла update/render директивы.

Параметры
value
unknown

Значение, которое нужно установить

Подробности

Этот метод не следует вызывать синхронно из update или render директивы.

update(_part, args): unknownИсходный код

Параметры
_part
Part
args
Array<unknown>

директива whenИсходный код

Если condition равно true, возвращает результат вызова trueCase(), иначе, если falseCase определен, возвращает результат вызова falseCase().

Импорт

import { when } from 'lit/directives/when.js';

Сигнатура

when(condition, trueCase, falseCase?): T

Параметры

condition
true
trueCase
() => T
falseCase?
() => F

Подробности

Это удобная обертка над тернарным выражением, которая упрощает запись встроенного условного выражения без ветви else.

© Google LLC
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://lit.dev/docs/v2/api/directives/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API