As given in below code, I store the state, and also I am getting values in the “value” variable after using onChange={(...)=>setValue1(...)}, value.target.ariaValueText
.
My motive is I want to associate it with {key}
mentioned in <Form.Lable>
, so that I can store updated value along with the keys.
const [value, setValue1] = React.useState(1); const handleChange=(changeEvent)=>{ setValue1(prevState => {...prevState, [key]:changeEvent.target.value}); //console.log(key); console.log(prevState.key); }; return <div className={classes.root}> <Form.Label> {key} </Form.Label> <Slider defaultValue={dict[key]} aria-labelledby="discrete-slider-custom" getAriaValueText={valuetext} valueLabelDisplay="auto" //getAriaValueText={valuetext} //value={dict[key]} step={0.01} min={min1} max={max1} //onChange={} // for example updating a state value //onChangeCommitted={} // for example fetching new data //marks={marks_arr[i]} //onChange={handleChange} onChange={(changeEvent) => setValue1(changeEvent.target.value) } /> </div> }) } </Form.Group>
Advertisement
Answer
You can update your type to be an object type to store key-value pairs. for eg:
const [value, setValue1] = React.useState({}); ... setValue1({[key]: changeEvent.target.value}); // ---------^ this will create/update attribute with value of "key" in your state
If you have multiple sliders you’d have to do something like
setValue1(prevState => {...prevState, [key]: changeEvent.target.value});
to not lose other key-value pairs