我正在查看文档,看起来Slider
要求值必须是整数,而且还需要回退到第一项或最后一项,以防我传递的数字不在滑块的值列表中。
我正在创建一个组件,该组件要求用户选择以下其中之一:
Never | Rarely | Sometimes | Frequently | Almost always | Always
但对我来说,选择一个初始选项是没有意义的。这些选项最初应显示为未选中。这是不是Slider
不是被创建来做的呢?看起来很简单,没有值作为默认值。我是不是遗漏了什么?
材质UI滑块文档:https://material-ui.com/api/slider/
发布于 2021-02-25 18:59:10
目前,不可能有没有值的MuiSlider。它将从defaultValue
或value
中选取值。
对于您的用例,如果您需要使用Slider组件,则需要再引入一个额外的值(仅用于UI )
import { Typography, Slider } from "@material-ui/core";
const marks = [
{ label: "None", value: 0 },
{
label: "Never",
value: 1
},
{
label: "Rarely Sometimes",
value: 2
},
{
label: " Frequently",
value: 3
},
{
label: "Almost always",
value: 4
},
{
label: "Always",
value: 5
}
];
export default function DiscreteSlider() {
const [sliderValue, setSliderValue] = useState(marks[0].value);
const onSliderValueChange = (e, val) => {
setSliderValue(val);
};
return (
<div>
<Typography id="discrete-slider" gutterBottom>
Slider
</Typography>
<Slider
aria-labelledby="discrete-slider"
valueLabelDisplay="off"
value={sliderValue}
onChangeCommitted={onSliderValueChange}
marks={marks}
min={0}
max={5}
/>
</div>
);
}
否则,您还可以检查实验室版本中提供的Rating
组件,并将其评级与您的选择值进行映射。
import Rating from "@material-ui/lab/Rating";
import Typography from "@material-ui/core/Typography";
export default function SimpleRating() {
const [value, setValue] = React.useState(0);
return (
<div>
<Rating
name="simple-controlled"
value={value}
onChange={(event, newValue) => {
setValue(newValue);
}}
/>
</div>
);
}
https://stackoverflow.com/questions/66368312
复制相似问题