Можно ли пропустить поддерево во вложенных вызовах lit- html? - PullRequest
0 голосов
/ 10 марта 2020

Я использую только что горит - html, а не Polymer или любой другой компонент lib.

Сценарий: Root компонент содержит подкомпонент A содержит подкомпонент B содержит подкомпонент C

Идеальное поведение: Root компонент рендеринга, подкомпонент A понимает, что пока не нуждается в повторном рендеринге, поэтому пропускает грязную проверку и просто возвращает поддерево DOM.

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

Возможно ли добиться такого потока с помощью директив?

Таким образом, хотя приведенный ниже код не соответствует требованиям (счетчики обновляются sh при повторном рендеринге root), мы надеемся, что он передает то, что я пытаюсь сделать (то есть я хочу div перерисовать, но ничего не делать для частей asyncReplace, но вернуть то, что уже есть):

async function* countUp2() {
    let i = 0;
    while (true) {
        yield i++
        await wait(500);
    }
}

const renderComponent = () => {
    render(
        html`<div>${asyncReplace(countUp())}${asyncReplace(countUp())}</div>`,
        this._shadowRoot
    )
}

setInterval(renderComponent, 500)
...