From 7679c08642f53e67aedfac121e7ad327e636c811 Mon Sep 17 00:00:00 2001 From: E66 Date: Sat, 10 Jan 2026 06:23:15 +0800 Subject: [PATCH] fix(components): [avatar] watch srcSet changes to reset hasLoadError (#23324) --- .../avatar/__tests__/avatar.test.tsx | 38 ++++++++++--------- packages/components/avatar/src/avatar.vue | 2 +- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/components/avatar/__tests__/avatar.test.tsx b/packages/components/avatar/__tests__/avatar.test.tsx index 9b02a277e7..3db9b269ce 100644 --- a/packages/components/avatar/__tests__/avatar.test.tsx +++ b/packages/components/avatar/__tests__/avatar.test.tsx @@ -77,24 +77,28 @@ describe('Avatar.vue', () => { } }) - test('src changed', async () => { - const wrapper = mount( - 'fallback', - }} - /> - ) + describe('image source changed', () => { + test.each([ + { name: 'src', prop: 'src' }, + { name: 'srcSet', prop: 'srcSet' }, + ])('$name', async ({ prop }) => { + const wrapper = mount( + 'fallback', + }} + /> + ) - expect(wrapper.vm.hasLoadError).toBe(false) - await wrapper.setProps({ src: IMAGE_FAIL }) - // wait error event trigger - await stableLoad(() => !wrapper.vm.hasLoadError) - expect(wrapper.vm.hasLoadError).toBe(true) - await wrapper.setProps({ src: IMAGE_SUCCESS }) - await flushPromises() - expect(wrapper.vm.hasLoadError).toBe(false) - expect(wrapper.find('img').exists()).toBe(true) + expect(wrapper.vm.hasLoadError).toBe(false) + await wrapper.setProps({ [prop]: IMAGE_FAIL }) + await stableLoad(() => !wrapper.vm.hasLoadError) + expect(wrapper.vm.hasLoadError).toBe(true) + await wrapper.setProps({ [prop]: IMAGE_SUCCESS }) + await flushPromises() + expect(wrapper.vm.hasLoadError).toBe(false) + expect(wrapper.find('img').exists()).toBe(true) + }) }) }) diff --git a/packages/components/avatar/src/avatar.vue b/packages/components/avatar/src/avatar.vue index 392538b7f2..47ed57fb1a 100644 --- a/packages/components/avatar/src/avatar.vue +++ b/packages/components/avatar/src/avatar.vue @@ -66,7 +66,7 @@ const fitStyle = computed(() => ({ // need reset hasLoadError to false if src changed watch( - () => props.src, + () => [props.src, props.srcSet], () => (hasLoadError.value = false) )