首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制材质-更改时的ui滑块最大值和最小值

问控制材质-更改时的ui滑块最大值和最小值
EN

Stack Overflow用户
提问于 2020-10-21 22:09:30
回答 1查看 1.2K关注 0票数 0

我正在使用material-ui.com的slider component来选择价格范围。

如何避免最小值不大于最大值?我希望避免在它们之间移动选取器。

代码语言:javascript
复制
export default function CustomizedSlider() {
  const classes = useStyles();
  const [startPrice, setStartPrice] = React.useState(1000000)
  const [endPrice, setEndPrice] = React.useState(10000000)

  const handleChange = (event, value) => {
    setStartPrice(value[0])
    setEndPrice(value[1])
  }

  return (
      <Card>
        <AirbnbSlider
          ThumbComponent={ChevronLeftIcon}
          getAriaLabel={(index) => (index === 0 ? 'Minimum price' : 'Maximum price')}
          min={100}
          max={100000000}
          defaultValue={[startPrice, endPrice]}
          onChangeCommitted={handleChange}
          onChange={handleOnChange}
          step={100}
        />
      </Card>
  );
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-21 22:21:00

您可以在更改之前保存该值。现在检查旧值和新值。当这两个值更改时,滑块会重叠,您可以返回函数。

我编辑了材料示例:

代码语言:javascript
复制
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import Slider from '@material-ui/core/Slider';

const useStyles = makeStyles({
    root: {
        width: 300,
    },
});

function valuetext(value) {
    return `${value}°C`;
}

let beforeChange = null;

export default function RangeSlider() {
    const classes = useStyles();
    const [value, setValue] = React.useState([20, 37]);

    const handleChange = (event, newValue) => {
        if (!beforeChange) {
            beforeChange = [...value];
        }

        if (beforeChange[0] !== newValue[0] && beforeChange[1] !== newValue[1]) {
            return;
        }
        
        setValue(newValue);
    };

    const handleChangeCommitted = () => {
        beforeChange = null;
    };

    return (
        <div className={classes.root}>
            <Typography id="range-slider" gutterBottom>
                Temperature range
      </Typography>
            <Slider
                value={value}
                onChange={handleChange}
                onChangeCommitted={handleChangeCommitted}
                valueLabelDisplay="auto"
                aria-labelledby="range-slider"
                getAriaValueText={valuetext}
            />
        </div>
    );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64465410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档