我有一个模板组件,其中包含一个非Prop成员变量:private _zIndex
。该变量的值可以通过调用Method() setZIndex( zIndex : number );
来设置,也可以在组件内部执行其操作时更改。我需要一种从外部获取此变量的当前值的方法。我尝试创建仅return this._zIndex
的Method()。问题在于此方法必须是异步的,因为如果不是,则会收到警告:
External @Method() getZIndex() should return a Promise or void.
Consider prefixing the method with async, Next minor release will error.
我不希望getZIndex()函数是异步的,所以我的另一个选择是制作一个Prop( { mutable: true } ) _zIndex
。如果这样做,则可以设置/获取变量的值,但是现在无论何时我设置变量的值,都将强制模具重新渲染组件。这可能很慢,因为我的组件很大并且包含很多嵌套组件。
有什么办法可以做到:
或
答案 0 :(得分:0)
1-模具@Method
应该是异步的。在此做出此决定有一些理由:https://stenciljs.com/docs/methods
2-您可以使用componentWillUpdate()
生命周期方法来确定何时要重新渲染组件:https://stenciljs.com/docs/component-lifecycle#rendering-state
为防止_zIndex
触发重新渲染,您需要存储以前的值,并将其与当前值进行比较:
componentWillUpdate() {
if (this._zIndex !== this.cachedZindex) {
return false;
}
return true;
}