MaterialUI 滑块限制

问题描述 投票:0回答:1

我有 8 个滑块,范围为 0-100,并在 0、25、50、75 和 100 处有 5 个标记。我希望用户能够在 8 个滑块上分配 350 个点。显然,每一步都会消耗 25 点,如果您向后移动,就会返回它们。

我尝试在花费 350 点后禁用滑块,但随后我无法将它们滑回来(因为它们被禁用了,哈哈)。只有使用额外的按钮进行重置才有效,但这不是一个非常优雅的解决方案。而且只要点击一个标记就可以绕过限制。

reactjs typescript material-ui slider
1个回答
0
投票

如果滑块超过最大值,您可以通过编程将其移动到最大值 - 您可以使用

onChange
onChangeCommitted
道具来实现这一点。它可能看起来像这样:

  const [value, setValue] = React.useState(0);

  function handleChange(_, newValue) {
    const maxValue = getMaxValue();
    if (newValue > maxValue) {
      setValue(maxValue);
    } else {
      setValue(newValue);
    }
  }

//...
  return (
    <Slider
      value={value}
      onChange={handleChange}
      //other props...
    />
  )

您所要做的就是弄清楚如何存储每个滑块的值,如何实现

getMaxValue
功能以及如何通知用户他们试图超出限制。也许滑块(或其背景)会以红色闪烁?显示限制并在每次更改时更新它也会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.