LitElement 生命周期:在第一次渲染之前

alf*_*ino 1 polymer lit-element

有没有办法在组件具有可用属性之后但在第一次渲染之前执行方法?我的意思是 classcontructor()firstUpdated(). 这听起来微不足道,也许实际上我错过了一些微不足道的东西..

Ben*_*ers 6

在创建元素时调用元素的构造函数,通过 HTML 解析器,或者例如通过 document.createElement

下一个回调是connectedCallback在 DOM 节点连接到文档时调用的。此时,您可以访问元素的 light DOM。确保super.connectedCallback()在做你自己的工作之前调用,因为LitElement实例在这里有一些工作要做。

下一个回调是shouldUpdate,这是一个可选的谓词,它通知 LitElement 是否应该运行它的渲染周期。例如,如果您有一个观察到的data属性并在render. 我发现最好把这个当做一个谓词,而不是在里面添加各种生命周期逻辑。

之后,updaterender被调用,然后updatedfirstUpdated。在 中执行副作用通常被认为是不好的做法render,您真正需要覆盖的update情况很少见。

在您的情况下,听起来很像您应该在 中完成工作connectedCallback,除非您依赖于 LitElement 渲染的 shadow DOM,在这种情况下,您可能会考虑在 中运行您的代码firstUpdated,然后调用this.requestUpdate()以强制进行第二次更新(或更改一些观察到的财产在firstUpdated)

更多信息:https : //lit-element.polymer-project.org/guide/lifecycle