From b31e727edd92442a80df766639ff4d33d9ef2175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BC=8A=E5=A2=A8?= <1905672206@qq.com> Date: Tue, 3 Jun 2025 09:07:37 +0800 Subject: [PATCH] fix(components): [select] display exception when label is `0` or `""` (#20905) * fix(components): [option] display exception when label is `0` or `""` * test: add test case --- .../select/__tests__/select.test.ts | 30 +++++++++++++++++++ packages/components/select/src/useOption.ts | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/components/select/__tests__/select.test.ts b/packages/components/select/__tests__/select.test.ts index e07a41e127..289a6acc5e 100644 --- a/packages/components/select/__tests__/select.test.ts +++ b/packages/components/select/__tests__/select.test.ts @@ -3246,4 +3246,34 @@ describe('Select', () => { await nextTick() expect(selectVm.selectedLabel).toBe('') }) + + // #20905 + test('display correct when label is 0 or ""', async () => { + wrapper = _mount( + ` + + + + + `, + () => ({ + options: [ + { value: '黄金糕', label: '' }, + { value: '双皮奶', label: 0 }, + { value: '蚵仔煎', label: '蚵仔煎' }, + { value: '北京烤鸭', label: undefined }, + ], + }) + ) + await nextTick() + const options = getOptions() + expect(options[0].textContent).toBe('') + expect(options[1].textContent).toBe('0') + expect(options[2].textContent).toBe('蚵仔煎') + expect(options[3].textContent).toBe('北京烤鸭') + }) }) diff --git a/packages/components/select/src/useOption.ts b/packages/components/select/src/useOption.ts index e7d321d76b..f8f3ab23a9 100644 --- a/packages/components/select/src/useOption.ts +++ b/packages/components/select/src/useOption.ts @@ -38,7 +38,7 @@ export function useOption(props: OptionProps, states: OptionStates) { }) const currentLabel = computed(() => { - return props.label || (isObject(props.value) ? '' : props.value) + return props.label ?? (isObject(props.value) ? '' : props.value) }) const currentValue = computed(() => {