Как установить ручку в nouislider-react?

У меня проблемы с настройкой дескриптора noUiSlider. Это то, что у меня есть на данный момент.

const SearchOptionRange: React.FC<SearchOptionRangeProps> = props => {

  const [lowValue, setLowValue] = useState(props.start);
  const [highValue, setHighValue] = useState(props.end);

  const handleLow = (event: any) => {
    setLowValue(event.target.value);
  }

  const handleHigh = (event: any) => {
    setHighValue(event.target.value);

  }

  const updateValues = (value: any) => {
    setLowValue(Number(value[0]));
    setHighValue(Number(value[1]));
  };

  return (
        <div className={props.name}>
          <div className="option-name">{props.name}</div>
          <Nouislider
            start={[props.start, props.end]}
            connect={true}
            range={{
              min: props.start,
              max: props.end
            }}
            step={props.step}
            onUpdate={ (value) => updateValues(value) }
          />
          <div className="inputs">
            <input type="text" value={lowValue} onChange={ (event) => handleLow(event)}></input>
            <input type="text" value={highValue} onChange={ (event) => handleHigh(event)}></input>
          </div>
        </div>
  );
};

И мой компонент называется так.

<SearchOptionRange name="price" start={300} end={25000} step={50}></SearchOptionRange>

Цель состоит в том, чтобы обновить ползунок, когда я ввожу значения во входные данные. Работает наоборот (перетаскивание ползунка обновляет входные значения).

Как это выглядит

Я просто не могу понять, как я могу обновить ползунок при вводе ввода. Кто-нибудь может мне помочь?


person Jürgen Lorenz    schedule 12.12.2019    source источник


Ответы (1)


вот ваш ответ: https://codesandbox.io/s/affectionate-visvesvaraya-xdy1w

когда вы вводите число в каждый ввод, значение ползунка обновляется, а обработчик перемещается.

person Amir Rezvani    schedule 12.12.2019
comment
Благодарю за ваш ответ! Еще не пробовал, но есть ли способ улучшить поведение слайдера? На данный момент, если вы попробуете его сдвинуть, то он тормозит. Это из-за того, что происходит постоянное обновление, но было бы неплохо его сгладить. - person Jürgen Lorenz; 13.12.2019
comment
да я это сделал. codesandbox.io/s/affectionate-visvesvaraya-xdy1w Я предотвращаю синхронизацию обновлений с помощью onChange вместо onSlide Event - person Amir Rezvani; 13.12.2019
comment
Благодарю за ваш ответ. Но я по-прежнему стремлюсь к постоянному обновлению входных данных, но без задержек. Все еще не знаю, как это сделать, но нужно как-то уменьшить количество обновлений. Есть ли возможность в nouislider-react установить значение на слайдере? Потому что, если свойство start ползунка постоянно обновляется, оно начинает отставать. Существует возможность установить значения дескрипторов в pureJS (refreshless.com/nouislider/ slider-read-write / # section-setting), но мне не удалось заставить его работать в React. - person Jürgen Lorenz; 14.12.2019
comment
Но он также не обновляет значения во входных данных постоянно. Я также хотел бы показать, какое значение имеет ввод. Поэтому он должен постоянно обновляться (показывая текущее значение маркера ползунка). - person Jürgen Lorenz; 14.12.2019