Skip to content

Commit 3fb972e

Browse files
authored
fix: incorrect display when value is null in multiple mode (#1009)
* fix: incorrect display when value is null in multiple mode * test: optimize case
1 parent 5773bff commit 3fb972e

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/Select.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,15 +311,16 @@ const Select = React.forwardRef(
311311

312312
// Merged value with LabelValueType
313313
const rawLabeledValues = React.useMemo(() => {
314-
const values = convert2LabelValues(internalValue);
314+
const newInternalValue = multiple && internalValue === null ? [] : internalValue;
315+
const values = convert2LabelValues(newInternalValue);
315316

316317
// combobox no need save value when it's no value (exclude value equal 0)
317318
if (mode === 'combobox' && isComboNoValue(values[0]?.value)) {
318319
return [];
319320
}
320321

321322
return values;
322-
}, [internalValue, convert2LabelValues, mode]);
323+
}, [internalValue, convert2LabelValues, mode, multiple]);
323324

324325
// Fill label with cache to avoid option remove
325326
const [mergedValues, getMixedOption] = useCache(rawLabeledValues, valueOptions);

tests/Multiple.test.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,24 @@ describe('Select.Multiple', () => {
546546
expect(wrapper.find('Selector').props().values.length).toEqual(0);
547547
});
548548

549+
it('display correctly when value is undefined or null', () => {
550+
const wrapper1 = mount(
551+
<Select mode="multiple" value={undefined}>
552+
<Option value={1}>1</Option>
553+
<Option value={2}>2</Option>
554+
</Select>,
555+
);
556+
const wrapper2 = mount(
557+
<Select mode="multiple" value={null}>
558+
<Option value={1}>1</Option>
559+
<Option value={2}>2</Option>
560+
</Select>,
561+
);
562+
563+
expect(wrapper1.find('.rc-select-selection-item').length).toBe(0);
564+
expect(wrapper2.find('.rc-select-selection-item').length).toBe(0);
565+
});
566+
549567
describe('optionLabelProp', () => {
550568
it('basic', () => {
551569
const wrapper = mount(

0 commit comments

Comments
 (0)