diff --git a/src/skeleton/skeleton.ts b/src/skeleton/skeleton.ts index e2d3982f8d..e9369c9c19 100644 --- a/src/skeleton/skeleton.ts +++ b/src/skeleton/skeleton.ts @@ -28,6 +28,8 @@ export default class Skeleton extends SuperComponent { properties = props; + timer = undefined; + data = { prefix, classPrefix: name, @@ -48,6 +50,10 @@ export default class Skeleton extends SuperComponent { this.init(); this.isShowSkeleton(); }, + + detached() { + this.clearTimer(); + }, }; methods = { @@ -127,17 +133,28 @@ export default class Skeleton extends SuperComponent { return style; }, + clearTimer() { + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + }, + isShowSkeleton() { + this.clearTimer(); + const { loading, delay } = this.properties; + if (!loading || delay === 0) { this.setData({ isShow: loading, }); return; } - setTimeout(() => { + + this.timer = setTimeout(() => { this.setData({ - isShow: loading, + isShow: this.properties.loading, }); }, delay); },