diff --git a/packages/components/select/__tests__/select.test.ts b/packages/components/select/__tests__/select.test.ts index 66448564e2..59ef6ef386 100644 --- a/packages/components/select/__tests__/select.test.ts +++ b/packages/components/select/__tests__/select.test.ts @@ -515,6 +515,34 @@ describe('Select', () => { expect(wrapper.find(`.${PLACEHOLDER_CLASS_NAME}`).text()).toBe('Option D') }) + test('set default value to object with value-key', async () => { + wrapper = _mount( + ` + + + + `, + () => ({ + options: [ + { id: 1, label: 'Option A', desc: 'Option A - 230506' }, + { id: 2, label: 'Option B', desc: 'Option B - 230506' }, + { id: 3, label: 'Option C', desc: 'Option C - 230506' }, + { id: 4, label: 'Option A', desc: 'Option A - 230507' }, + ], + value: { id: 3 }, + }) + ) + await nextTick() + const options = getOptions() + expect(wrapper.find(`.${PLACEHOLDER_CLASS_NAME}`).text()).toBe('Option C') + expect(Array.from(options[2].classList)).toContain('is-selected') + }) + test('sync set value and options', async () => { wrapper = _mount( ` diff --git a/packages/components/select/src/useOption.ts b/packages/components/select/src/useOption.ts index 1ecde81b70..1bdd23df7f 100644 --- a/packages/components/select/src/useOption.ts +++ b/packages/components/select/src/useOption.ts @@ -11,10 +11,10 @@ export function useOption(props, states) { // computed const itemSelected = computed(() => { - if (!select.props.multiple) { - return isEqual(props.value, select.props.modelValue) - } else { + if (select.props.multiple) { return contains(select.props.modelValue as unknown[], props.value) + } else { + return contains([select.props.modelValue] as unknown[], props.value) } })