From 3508d4f6760bde69cdca270caefda9a9331ff75a Mon Sep 17 00:00:00 2001 From: Zhong Date: Sat, 18 Oct 2025 16:24:17 +0800 Subject: [PATCH] fix(components): [select-v2] use correct labelKey in selectedLabel (#22516) * fix(components): [select-v2] use correct labelKey in selectedLabel * test: add case * test: update --- .../select-v2/__tests__/select.test.ts | 39 +++++++++++++++++++ packages/components/select-v2/src/select.vue | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/components/select-v2/__tests__/select.test.ts b/packages/components/select-v2/__tests__/select.test.ts index bd729597f9..c5a259ae82 100644 --- a/packages/components/select-v2/__tests__/select.test.ts +++ b/packages/components/select-v2/__tests__/select.test.ts @@ -603,6 +603,45 @@ describe('Select', () => { }) }) + it('should use alias for selected label', async () => { + const wrapper = createSelect({ + data: () => { + return { + options: [ + { value: 'value1', name: 'label1', text: 'text1' }, + { value: 'value2', name: 'label2', text: 'text2' }, + ], + multiple: false, + value: '', + props: { label: 'name' }, + } + }, + }) + await nextTick() + const select = wrapper.findComponent(Select) + const selectVm = select.vm as any + const vm = wrapper.vm as any + + const options = getOptions() + options[0].click() + expect(selectVm.selectedLabel).toBe('label1') + vm.value = 'value2' + await nextTick() + expect(selectVm.selectedLabel).toBe('label2') + + vm.multiple = true + vm.value = [] + await nextTick() + expect(selectVm.selectedLabel).toStrictEqual([]) + vm.value = ['value1', 'value2'] + await nextTick() + expect(selectVm.selectedLabel).toStrictEqual(['label1', 'label2']) + + vm.props.label = 'text' + await nextTick() + expect(selectVm.selectedLabel).toStrictEqual(['text1', 'text2']) + }) + describe('multiple', () => { it('multiple select', async () => { const wrapper = createSelect({ diff --git a/packages/components/select-v2/src/select.vue b/packages/components/select-v2/src/select.vue index af064bdaf8..6091744707 100644 --- a/packages/components/select-v2/src/select.vue +++ b/packages/components/select-v2/src/select.vue @@ -366,7 +366,7 @@ export default defineComponent({ if (!props.multiple) { return API.states.selectedLabel } - return API.states.cachedOptions.map((i) => i.label as string) + return API.states.cachedOptions.map((i) => API.getLabel(i) as string) }) return {