File tree Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -377,6 +377,15 @@ export default function generateSelector<
377
377
const baseValue =
378
378
value !== undefined && value !== null ? value : innerValue ;
379
379
380
+ // Should reset when controlled to be uncontrolled
381
+ const prevValueRef = React . useRef ( value ) ;
382
+ React . useEffect ( ( ) => {
383
+ if ( prevValueRef . current !== value && value === undefined ) {
384
+ setInnerValue ( undefined ) ;
385
+ }
386
+ prevValueRef . current = value ;
387
+ } , [ value ] ) ;
388
+
380
389
/** Unique raw values */
381
390
const mergedRawValue = React . useMemo < RawValueType [ ] > (
382
391
( ) =>
Original file line number Diff line number Diff line change @@ -1448,4 +1448,13 @@ describe('Select.Basic', () => {
1448
1448
wrapper . find ( 'input' ) . simulate ( 'change' , 'Z' ) ;
1449
1449
expect ( wrapper . find ( 'List' ) . props ( ) . data ) . toHaveLength ( 1 ) ;
1450
1450
} ) ;
1451
+
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' ) ;
1455
+
1456
+ wrapper . setProps ( { value : undefined } ) ;
1457
+ wrapper . update ( ) ;
1458
+ expect ( wrapper . find ( '.rc-select-selection-item' ) ) . toHaveLength ( 0 ) ;
1459
+ } ) ;
1451
1460
} ) ;
You can’t perform that action at this time.
0 commit comments