reactjs - React - SUM 状态值
问题描述
编辑:我忘了说输入上的 onChange 不起作用,我如何告诉 onChange 它是组内的状态值?
几周前我开始学习 React。我想对组状态值求和,并且每次更改总值时也会发生变化。我正在使用材质 ui 来创建表单。问题是,如果我将状态值更改为 int,FormControlLabel 值将不起作用......作为字符串,总数无法按预期工作。以及每次更改选项时如何处理总更改?
提前致谢。
class App extends React.Component {
constructor(props) {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
this.state = {
total: 0,
group: {
feedingGroup: "3",
bathingA: "3",
bathingB: "3",
}
}
}
componentDidMount() {
this.setState({ total: this.calculateTotal(this.state.group) });
}
calculateTotal = (values) => {
return Object.entries(values).reduce((finalValue, [key, value]) => {
return finalValue + value;
}, 0);
}
handleSubmit(event) {
event.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<FormControl component="fieldset" error="" className="">
<RadioGroup aria-label="quiz" name="quiz" value={this.state.group.feedingGroup}
onChange={(value) => { this.setState({ feedingGroup: (value.target.value) }); }}>
<FormControlLabel value="0" control={<Radio />} label="Op1" />
<FormControlLabel value="1" control={<Radio />} label="Op2" />
<FormControlLabel value="2" control={<Radio />} label="Op3" />
<FormControlLabel value="3" control={<Radio />} label="Op4" />
</RadioGroup>
<RadioGroup aria-label="quiz" name="quiz" value={this.state.group.bathingA}
onChange={(value) => { this.setState({ bathingA: (value.target.value) }); }}>
<FormControlLabel value="0" control={<Radio />} label="Op1" />
<FormControlLabel value="1" control={<Radio />} label="Op2" />
<FormControlLabel value="2" control={<Radio />} label="Op3" />
<FormControlLabel value="3" control={<Radio />} label="Op4" />
</RadioGroup>
<Button type="submit" variant="outlined" color="primary" className="">
Check Answer
</Button>
<FormHelperText>{this.state.total}</FormHelperText>
</FormControl>
</form>
);
}
}
export default App;
解决方案
如何铸造价值:
calculateTotal = (values) => {
return Object.entries(values).reduce((finalValue, [key, value]) => {
return finalValue + Number(value);
}, 0);
}
推荐阅读
- r - 从条件创建一个新列
- javascript - 具有特定内容的 Vue 每日日历 (Vuetify)
- javascript - 如何相对于它们所在的列而不是页面来定位我的幻灯片的下一个/上一个按钮?(奖励:让他们圈起来?)
- sql-server - 如何减少 SQL Server 中的高页面读取/秒?
- cypress - 如何将 HTML 标记与 Cypress 中的符号进行比较
- java - 是否可以有特定于端点的自定义 JSON 序列化器?
- reactjs - 我可以在前端使用 JSDom 来解析 html
- python - 打印多行字符串,水平堆叠和对齐
- java - 如何以一定的间隔运行提交的任务一定次数
- typescript - 为 req.body 节点/express 后端定义 Typescript 类型