@@ -214,9 +214,11 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
214214
215215 // ============================ Marks =============================
216216 const markList = React . useMemo < InternalMarkObj [ ] > ( ( ) => {
217- return Object . keys ( marks || { } )
217+ const markRecord = marks || { } ;
218+
219+ return Object . keys ( markRecord )
218220 . map < InternalMarkObj > ( ( key ) => {
219- const mark = marks [ key ] ;
221+ const mark = markRecord [ key ] ;
220222 const markObj : InternalMarkObj = {
221223 value : Number ( key ) ,
222224 } ;
@@ -269,7 +271,7 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
269271
270272 // When count provided or value is `undefined`, we fill values
271273 if ( count || mergedValue === undefined ) {
272- const pointCount = count >= 0 ? count + 1 : 2 ;
274+ const pointCount = count !== undefined && count >= 0 ? count + 1 : 2 ;
273275 returnValues = returnValues . slice ( 0 , pointCount ) ;
274276
275277 // Fill with count
@@ -287,6 +289,8 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
287289
288290 return returnValues ;
289291 } , [ mergedValue , rangeEnabled , mergedMin , count , formatValue ] ) ;
292+ const rawValuesRef = React . useRef ( rawValues ) ;
293+ rawValuesRef . current = rawValues ;
290294
291295 // =========================== onChange ===========================
292296 const getTriggerValue = ( triggerValues : number [ ] ) =>
@@ -349,6 +353,8 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
349353 rangeEditable ,
350354 minCount ,
351355 ) ;
356+ const draggingValueRef = React . useRef ( draggingValue ) ;
357+ draggingValueRef . current = draggingValue ;
352358
353359 /**
354360 * When `rangeEditable` will insert a new value in the values array.
@@ -455,7 +461,7 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
455461
456462 React . useEffect ( ( ) => {
457463 if ( keyboardValue !== null ) {
458- const valueIndex = rawValues . indexOf ( keyboardValue ) ;
464+ const valueIndex = rawValuesRef . current . indexOf ( keyboardValue ) ;
459465 if ( valueIndex >= 0 ) {
460466 handlesRef . current . focus ( valueIndex ) ;
461467 }
@@ -485,7 +491,7 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
485491 const dragging = draggingIndex !== - 1 ;
486492 React . useEffect ( ( ) => {
487493 if ( ! dragging ) {
488- const valueIndex = rawValues . lastIndexOf ( draggingValue ) ;
494+ const valueIndex = rawValuesRef . current . lastIndexOf ( draggingValueRef . current ) ;
489495 handlesRef . current . focus ( valueIndex ) ;
490496 }
491497 } , [ dragging ] ) ;
@@ -520,8 +526,9 @@ const Slider = React.forwardRef<SliderRef, SliderProps<number | number[]>>((prop
520526 } ) ) ;
521527
522528 // ========================== Auto Focus ==========================
529+ const autoFocusRef = React . useRef ( autoFocus ) ;
523530 React . useEffect ( ( ) => {
524- if ( autoFocus ) {
531+ if ( autoFocusRef . current ) {
525532 handlesRef . current . focus ( 0 ) ;
526533 }
527534 } , [ ] ) ;
0 commit comments