Skip to content

Commit 14e0a59

Browse files
authored
fix: select reset logic (#454)
1 parent 8fe0123 commit 14e0a59

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

src/generate.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,10 @@ export default function generateSelector<
380380
// Should reset when controlled to be uncontrolled
381381
const prevValueRef = React.useRef(value);
382382
React.useEffect(() => {
383-
if (prevValueRef.current !== value && value === undefined) {
383+
if (
384+
prevValueRef.current !== value &&
385+
(value === undefined || value === null)
386+
) {
384387
setInnerValue(undefined);
385388
}
386389
prevValueRef.current = value;

tests/Select.test.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1449,13 +1449,19 @@ describe('Select.Basic', () => {
14491449
expect(wrapper.find('List').props().data).toHaveLength(1);
14501450
});
14511451

1452-
it('reset value to undefined should reset display value', () => {
1453-
const wrapper = mount(<Select value="light" />);
1454-
expect(wrapper.find('.rc-select-selection-item').text()).toEqual('light');
1452+
describe('reset value to undefined should reset display value', () => {
1453+
[undefined, null].forEach(value => {
1454+
it(`to ${value}`, () => {
1455+
const wrapper = mount(<Select value="light" />);
1456+
expect(wrapper.find('.rc-select-selection-item').text()).toEqual(
1457+
'light',
1458+
);
14551459

1456-
wrapper.setProps({ value: undefined });
1457-
wrapper.update();
1458-
expect(wrapper.find('.rc-select-selection-item')).toHaveLength(0);
1460+
wrapper.setProps({ value });
1461+
wrapper.update();
1462+
expect(wrapper.find('.rc-select-selection-item')).toHaveLength(0);
1463+
});
1464+
});
14591465
});
14601466

14611467
describe('disabled on open', () => {

0 commit comments

Comments
 (0)