Skip to content

Commit 70892b9

Browse files
author
Sreten Madzgalj
committed
perf: useMemo for marks and steps
1 parent c55caa7 commit 70892b9

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/Slider.tsx

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,22 @@ const Slider = React.forwardRef((props: SliderProps, ref: React.Ref<SliderRef>)
476476
],
477477
);
478478

479+
// Performance improvements to not rerender marks and steps while dragging
480+
const marksElements = React.useMemo<React.ReactNode>(() => {
481+
return <Marks prefixCls={prefixCls} marks={markList} onClick={changeToCloseValue} />;
482+
}, [markList, prefixCls, changeToCloseValue]);
483+
const stepsElements = React.useMemo<React.ReactNode>(() => {
484+
return (
485+
<Steps
486+
prefixCls={prefixCls}
487+
marks={markList}
488+
dots={dots}
489+
style={dotStyle}
490+
activeStyle={activeDotStyle}
491+
/>
492+
);
493+
}, [markList, prefixCls, dots, dotStyle, activeDotStyle]);
494+
479495
// ============================ Render ============================
480496
return (
481497
<SliderContext.Provider value={context}>
@@ -500,13 +516,7 @@ const Slider = React.forwardRef((props: SliderProps, ref: React.Ref<SliderRef>)
500516
onStartMove={mergedDraggableTrack ? onStartMove : null}
501517
/>
502518

503-
<Steps
504-
prefixCls={prefixCls}
505-
marks={markList}
506-
dots={dots}
507-
style={dotStyle}
508-
activeStyle={activeDotStyle}
509-
/>
519+
{stepsElements}
510520

511521
<Handles
512522
ref={handlesRef}
@@ -521,7 +531,7 @@ const Slider = React.forwardRef((props: SliderProps, ref: React.Ref<SliderRef>)
521531
handleRender={handleRender}
522532
/>
523533

524-
<Marks prefixCls={prefixCls} marks={markList} onClick={changeToCloseValue} />
534+
{marksElements}
525535
</div>
526536
</SliderContext.Provider>
527537
);

0 commit comments

Comments
 (0)