簡體   English   中英

從 Material UI Slider 組件獲取值

[英]Getting the value from a Material UI Slider component

我在嘗試訪問已添加到組件的 value 屬性時遇到問題。

event.target.value

返回未定義。 如何訪問組件上的值? 我希望最終讓 handlePlayersChange() 能夠接受動態值。

 const SearchForm = () => { const [numPlayers, setNumPlayers] = useState([4, 6]); const handleSubmit = (event: any) => { event.preventDefault(); }; const handlePlayersChange = (event: any, newValue: any) => { setNumPlayers(newValue); }; return ( <form onSubmit={handleSubmit}> <h1>Search for Games;</h1> <div className="slidecontainer"> <Typography id="range-slider" gutterBottom> Number of Players </Typography> <Slider className="slider" min={1} max={8} value={numPlayers} onChange={handlePlayersChange} valueLabelDisplay="auto" aria-labelledby="range-slider" /> </div> <button>Search</button> </form> );

任何信息將不勝感激。 謝謝你。

也許您應該將 slider 放入一個單獨的組件中,並使用此類滑塊的多個實例,根據您的示例,我得到了這樣的結果:

import React from "react";
import Typography from "@material-ui/core/Typography";
import Slider from "@material-ui/core/Slider";

const SearchSlider = ({ onChange, name }) => {
  const [numPlayers, setNumPlayers] = React.useState([4, 6]);

  const handlePlayersChange = (event: any, newValue: any) => {
    setNumPlayers(newValue);
    onChange({name, newValue});
  };

  return (
    <div className="slidecontainer">
      <Typography id="range-slider" gutterBottom>
        Number of Players {name}
      </Typography>
      <Slider
        className="slider"
        min={1}
        max={8}
        name={name}
        value={numPlayers}
        onChange={handlePlayersChange}
        valueLabelDisplay="auto"
        aria-labelledby="range-slider"
      />
    </div>
  );
};

export default function SearchForm() {
  const [numPlayersBySliders, setNumPlayersBySliders] = React.useState([]);

  const handleSubmit = (event: any) => {
    event.preventDefault();
  };

  const onChange = ({ newValue, name }) => {
    const clearState = numPlayersBySliders.filter(s => s.name !== name);
    const newItem = { name, numPlayers: newValue };
    setNumPlayersBySliders([...clearState, newItem]);
    console.log(numPlayersBySliders);
  };

  return (
    <form onSubmit={handleSubmit}>
      <h1>Search for Games!</h1>
      <div className="slidecontainer">
        <SearchSlider onChange={onChange} name="Slider_1" />
        <SearchSlider onChange={onChange} name="Slider_2" />
      </div>
      <button>Search</button>
    </form>
  );
}

在這種情況下,您可以通過名稱區分不同滑塊的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM