javascript - 如何设置特定滑块的状态?
问题描述
我试图在 onChange 事件期间设置特定滑块的值。但是,这会导致在所有滑块上设置值。我想知道如何在 onChange 事件期间设置特定滑块的状态。
这是我迄今为止尝试过的(CodeSandbox)
class SimpleSlider extends React.Component {
state = {
value: 50
};
handleChange = (event, value) => {
this.setState({ value });
};
render() {
const { classes } = this.props;
const { value } = this.state;
return (
<div className={classes.root}>
<Typography id="label">Slider label</Typography>
<Slider
id="slider1"
value={value}
aria-labelledby="label"
onChange={this.handleChange}
/>
<Slider
id="slider2"
value={value}
aria-labelledby="label"
onChange={this.handleChange}
/>
</div>
);
}
}
解决方案
您可以将数组保持在每个元素都是滑块的值的状态,然后将带有值的索引传递给onChange
处理程序以更新正确的值。
例子
class SimpleSlider extends React.Component {
state = {
sliders: [50, 50]
};
handleChange = (index, value) => {
this.setState(previousState => {
const sliders = [...previousState.sliders];
sliders[index] = value;
return { sliders };
});
};
render() {
const { classes } = this.props;
const { value } = this.state;
return (
<div className={classes.root}>
<Typography id="label">Slider label</Typography>
{this.state.sliders.map((slider, index) => (
<Slider
key={index}
value={slider}
aria-labelledby="label"
onChange={(event, value) => this.handleChange(index, value)}
/>
))}
</div>
);
}
}
推荐阅读
- java - 为什么 picocli 不能从命令行识别我的选项?
- windows - Windows 10 上的 Windows SDK 是否与 Windows XP 及更低版本不兼容?
- grammar - 表达语法的语言
- javascript - 求和玩具问题对我来说毫无意义
- python - 云调度程序不接受我为计划作业创建的服务帐户
- regex - 在 Spark 数据框列中的特定字符串之后提取数字 - Scala
- c# - 从代码中执行 Sqlite3 命令行工具
- pandas - 大熊猫在 .json 文件中导出为 TZ 时间格式
- reactjs - Reducer Init State 中的两个布尔状态,一个返回 undefined
- java - 使用 split() 从文件中获取段落数组。"\n" 只按行而不是段落间隔