typescript - Kör en funktion efter lit-elementets målning


Jag vill köra en funktion efter att förändringar i två lit-element har målats/renderats på skärmen.

Jag har kommit på följande men jag undrar: (a) är det korrekt? (har jag använt requestAnimationFrame korrekt?) (b) finns det ett bättre sätt?

changeElementPropertiesWhichCauseRedraw(this.ele1, this.ele2);

Promise.all([this.ele1.updateComplete, this.ele2.updateComplete])
  .then(() => window.requestAnimationFrame(() => setTimeout(() => afterPaint())));

Svar #1

Som tur är finns det en färdig livscykelmetod som gör exakt vad du behöver. I din lit-element-komponent behöver du implementera följande:

  firstUpdated() {
    super.firstUpdated();
    // your code goes here
  }

Kallas när ditt element har renderats för första gången. Kallas en gång under ett elements livstid. Användbart för engångsinställningsarbete som kräver åtkomst till DOM.

Referens: https://open-wc.org/guides/knowledge/lit-element/lifecycle/