@@ -7,7 +7,7 @@ import { Popover, OutsideClick } from '@/index';
77import SelectTrigger , { SelectTriggerProps } from './SelectTrigger' ;
88import SearchInput from './SearchInput' ;
99import SelectEmptyTemplate from './SelectEmptyTemplate' ;
10- import { focusListItem , mapInitialValue } from './utils' ;
10+ import { focusListItem , mapInitialValue , isValueEqual } from './utils' ;
1111import SelectFooter from './SelectFooter' ;
1212import { BaseProps , extractBaseProps } from '@/utils/types' ;
1313import { PopoverProps } from '@/index.type' ;
@@ -168,6 +168,7 @@ export const Select = React.forwardRef<SelectMethods, SelectProps>((props, ref)
168168
169169 const triggerRef = React . createRef < HTMLButtonElement > ( ) ;
170170 const listRef = React . useRef < HTMLDivElement | null > ( null ) ;
171+ const prevValueRef = React . useRef < OptionType | OptionType [ ] | undefined > ( value ) ;
171172
172173 const [ withSearch , setWithSearch ] = React . useState ( false ) ;
173174
@@ -237,9 +238,13 @@ export const Select = React.forwardRef<SelectMethods, SelectProps>((props, ref)
237238 } , [ highlightLastItem ] ) ;
238239
239240 React . useEffect ( ( ) => {
240- if ( value ) {
241- setSelectValue ( value ) ;
242- setIsOptionSelected ( Array . isArray ( value ) ? value . length > 0 : value && 'value' in value ) ;
241+ // Only update if the value has actually changed (deep comparison)
242+ if ( ! isValueEqual ( prevValueRef . current , value ) ) {
243+ prevValueRef . current = value ;
244+ if ( value ) {
245+ setSelectValue ( value ) ;
246+ setIsOptionSelected ( Array . isArray ( value ) ? value . length > 0 : value && 'value' in value ) ;
247+ }
243248 }
244249 } , [ value ] ) ;
245250
0 commit comments