Skip to content

Commit e59c24b

Browse files
authored
Make Slider Value Controllable (#390)
1 parent 04a59b7 commit e59c24b

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

src/components/Slider/index.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export type SliderMark = {
88

99
export type SliderProps = {
1010
defaultValue?: number;
11+
value?: number;
1112
marks?: SliderMark[];
1213
min?: number;
1314
max?: number;
@@ -17,7 +18,7 @@ export type SliderProps = {
1718
};
1819

1920
export default function Slider(props: SliderProps): JSX.Element {
20-
const { defaultValue, marks, min, max, onChange, step, valueLabelDisplay } = props;
21+
const { defaultValue, value, marks, min, max, onChange, step, valueLabelDisplay } = props;
2122
const theme = useTheme();
2223

2324
const sliderStyles = {
@@ -42,19 +43,16 @@ export default function Slider(props: SliderProps): JSX.Element {
4243
},
4344
};
4445

45-
const [currentValue, setCurrentValue] = useState(defaultValue);
46-
const handleChange = (event: React.SyntheticEvent | Event, value: number | number[]) => {
47-
if (!Array.isArray(value)) {
48-
if (value !== currentValue) {
49-
setCurrentValue(value);
50-
onChange(value);
51-
}
46+
const handleChange = (event: React.SyntheticEvent | Event, val: number | number[]) => {
47+
if (!Array.isArray(val)) {
48+
onChange(val);
5249
}
5350
};
5451

5552
return <MuiSlider
56-
aria-label='Small steps'
53+
aria-label='Slider'
5754
defaultValue={defaultValue}
55+
value={value}
5856
marks={marks}
5957
min={min}
6058
max={max}

0 commit comments

Comments
 (0)