LitElement:从 attributeChangedCallback() 调用 requestUpdate() 不会更新(渲染)
LitElement: Calling requestUpdate() from attributeChangedCallback() doesn't update (render)
当我在更改 classMap 后从 attributeChangedCallback(...)
中调用 this.requestUpdate()
时,渲染函数没有被调用。
当我用超时调用它时,它似乎确实有效。这是方法还是错误?
attributeChangedCallback(name: string, oldVal: AttributeType, newVal: AttributeType) {
super.attributeChangedCallback(name, oldVal, newVal);
...
this.myClassMap = {
...this.myClassMap,
foo: newValueBasedOnChangedProperty,
}
// this doesn't seem to do anything
this.requestUpdate();
// this does trigger a re-render
setTimeout(() => this.requestUpdate(), 0);
}
似乎也有效的是等待 updateComplete 承诺使用这个:
this.updateComplete.then(
() => this.requestUpdate()
);
但还是本末倒置的感觉
我上面描述的行为似乎与 属性 改变结合反射有关。有关详细信息,请参阅 LitElement GitHub 存储库中的 issue。
你应该使用await element.updateComplete.then(() => this.requestUpdate());
当我在更改 classMap 后从 attributeChangedCallback(...)
中调用 this.requestUpdate()
时,渲染函数没有被调用。
当我用超时调用它时,它似乎确实有效。这是方法还是错误?
attributeChangedCallback(name: string, oldVal: AttributeType, newVal: AttributeType) {
super.attributeChangedCallback(name, oldVal, newVal);
...
this.myClassMap = {
...this.myClassMap,
foo: newValueBasedOnChangedProperty,
}
// this doesn't seem to do anything
this.requestUpdate();
// this does trigger a re-render
setTimeout(() => this.requestUpdate(), 0);
}
似乎也有效的是等待 updateComplete 承诺使用这个:
this.updateComplete.then(
() => this.requestUpdate()
);
但还是本末倒置的感觉
我上面描述的行为似乎与 属性 改变结合反射有关。有关详细信息,请参阅 LitElement GitHub 存储库中的 issue。
你应该使用await element.updateComplete.then(() => this.requestUpdate());