javascript - 实现 slider 的范围与数字输入绑定(bind)

标签 javascript reactjs antd rc-slider

我正在使用antd slider 组件。我正在尝试实现一个范围 slider ,它也与两个数字输入绑定(bind),如下面所附的图像

enter image description here

在给定链接 https://codesandbox.io/s/icy-framework-xpvl9 中查找我的代码。在向 slider 组件添加范围 Prop 时,它会引发错误。我对在与范围 slider 绑定(bind)的数字输入中实现最小值和最大值的逻辑感到困惑。

        <Slider
          className="slider-main-div"
          min={min}
          max={max - 1}
          onChange={this.onChange}
          value={typeof inputValue === "number" ? inputValue : 0}
        />
        <div className="range-input-number-main">
          <InputNumber
            className="min-input-main"
            min={min + 1}
            max={max - 1}
            value={inputValue}
            onChange={this.onChangeMin}
          />
          <span className="range-span">to</span>
          <InputNumber
            className="min-input-main"
            min={21}
            max={50}
            value={inputValue}
            onChange={this.onChangeMax}
          />

最佳答案

我修改了确定 Input 的最大/最小值的方式,并添加了 ant design 为 Slider< 提供的 range 属性。我还删除了 this.state.inputValue,因为它似乎不需要。

这是带有范围的更新后的Slider

<Slider
          className="slider-main-div"
          min={0}
          max={100}
          onChange={this.onChange}
          range={true}
          defaultValue={[min, max]}
          value={[min, max]}
        />

您当前执行此操作的方式会导致堆栈大小错误,因为您将最大/最小值重新分配给 this.state.minthis.state.max 组件本身。因此,当您更改 App 状态时,antd 组件会在渲染中更新其初始化的 props,然后在按照 App 状态重新渲染时更新 antd 组件的状态改变,导致栈深度错误。

我最终给了它们 0-100 之间的默认值,并在函数中编写了一个条件来确定何时设置状态。例如,在 onChangeMin 中,仅当 value 小于 this.state.max 时才设置状态。否则不设置状态。这样,min 的输入值永远不会超过 max 的输入值。

 onChangeMin = value => {
    if (this.state.max > value) {
      this.setState({ min: value });
    }
  };

onChangeMax 相同,但这次将 valuethis.state.min 进行比较,并确保它不小于该值。

 onChangeMax = value => {
    if (this.state.min < value) {
      this.setState({ max: value });
    }
  };

您可以找到完全更新的代码here .

关于javascript - 实现 slider 的范围与数字输入绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379304/

相关文章:

javascript - select 标签中 ng-model 的问题

javascript - Firefox Developer Edition 52.0a2 如何查看变量的值?

javascript - 当游戏对象进入触发碰撞器时销毁它?

javascript - 未找到 Webpack 和 React 图像

javascript - Ant design - 有没有办法获得我实际使用的样式?

javascript - 使用 Ant Design Components 升级到 React 版本 16.10.2 时出错。函数组件不能被指定引用

javascript - jquery for regexp 不起作用

javascript - token '&&' 在此版本中不是有效的语句分隔符

ReactJS:在子组件内的父组件上设置状态

reactjs - 有条件地禁用 antd 表中的 selectAll 复选框