From 9bfa80f168e060fe567571325ef716575b2b2026 Mon Sep 17 00:00:00 2001 From: anlyyao Date: Wed, 9 Sep 2026 16:03:28 +0800 Subject: [PATCH 1/3] fix(avatar): fix image load error fallback and reload when image source changes --- packages/components/avatar/avatar.less | 8 ++++++++ packages/components/avatar/avatar.ts | 18 +++++++++++++----- packages/components/avatar/avatar.wxml | 6 +++--- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/packages/components/avatar/avatar.less b/packages/components/avatar/avatar.less index a5a15b4f9f..c487d34d65 100644 --- a/packages/components/avatar/avatar.less +++ b/packages/components/avatar/avatar.less @@ -72,6 +72,14 @@ &__image { width: 100%; height: 100%; + + &-alt { + display: flex; + align-items: center; + justify-content: center; + padding: @spacer; + overflow: hidden; + } } &--circle { diff --git a/packages/components/avatar/avatar.ts b/packages/components/avatar/avatar.ts index b12e4c2fed..30239da8c9 100644 --- a/packages/components/avatar/avatar.ts +++ b/packages/components/avatar/avatar.ts @@ -26,6 +26,7 @@ export default class Avatar extends SuperComponent { prefix, classPrefix: name, isShow: true, + isImgExist: true, zIndex: 0, windowWidth: systemInfo.windowWidth, }; @@ -52,6 +53,15 @@ export default class Avatar extends SuperComponent { ...obj, }); }, + + image(image) { + // 图片地址变化时重置加载失败标记,避免切换后无法重新渲染 + if (image) { + this.setData({ + isImgExist: true, + }); + } + }, }; methods = { @@ -62,11 +72,9 @@ export default class Avatar extends SuperComponent { }, onLoadError(e: WechatMiniprogram.CustomEvent) { - if (this.properties.hideOnLoadFailed) { - this.setData({ - isShow: false, - }); - } + this.setData({ + isImgExist: !this.properties.hideOnLoadFailed, + }); this.triggerEvent('error', e.detail); }, }; diff --git a/packages/components/avatar/avatar.wxml b/packages/components/avatar/avatar.wxml index a851deb8ca..e1d902658c 100644 --- a/packages/components/avatar/avatar.wxml +++ b/packages/components/avatar/avatar.wxml @@ -28,9 +28,9 @@ aria-hidden="{{ ariaHidden }}" >