Пользовательский интерфейс материала: как получить значения ползунка с помощью события onClick кнопки?

У меня есть форма, состоящая из нескольких ползунков с кнопкой отправки в конце.

В нереагирующей среде у меня обычно была бы функция, вызываемая для свойства кнопки onClick, где она перебирала бы все ползунки и переходила бы document.getElementById('mySliderIdX').value.

Но с Material UI в React я не могу получить доступ к значениям ползунка таким образом. Если я попытаюсь сделать это, я получу элемент span без свойства value.

Как получить значение всех моих ползунков с помощью кнопки?

Мой код здесь:

let getSliderValues = function (arrOfIDs) {
  let ratings = {}
  arrOfIDs.forEach(name_id => {    
    let slider = document.getElementsByName(name_id);
    ratings[name_id] = slider.value // this is undefined
  });
  console.info("slider values: ",ratings)
}

class MySliders extends Component(){
this.sliders = ["a","b","c"]

render(){
  return(
    <div>
      <Slider id = {this.sliders[0]} />
      <Slider id = {this.sliders[1]} />
      <Slider id = {this.sliders[2]} />
      <button onClick = {e=>this.getValues(this.sliders)}>submit</button>
    </div>
  )
}
}

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
1 002
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать свойство value компонента. Что-то вроде этого:

import React, { useState } from 'react';
import Button from '@material-ui/core/Button';
import Slider from '@material-ui/core/Slider';


export default function DiscreteSlider() {
  const [ratings, setRatings] = useState([0, 0, 0]);
  let getSliderValues = function () {
    console.info("slider values: ", ratings)
  }
  const getSliders = () => {
      const sliders = [];
      ratings.forEach((rating, index) => {
        sliders.push(<Slider
          key = {index}
          value = {ratings[index]}
          onChange = {(event, newValue) => {
            ratings[index] = newValue;
            const newRatings = [...ratings];
            setRatings(newRatings);
          }}
        />)
      });
      return sliders;
  }

  return (
    <div>
      {getSliders()}
      <Button onClick = {e=>getSliderValues()}>submit</Button>
    </div>
  );
}

Другие вопросы по теме