我有一组使用以下方法设置的单选按钮。在handleChange 处,如果目标元素是单选按钮,我会将值转换为整数。
在初始的handleChange上,typeof返回一个数字,但是后续调用以字符串形式返回状态。
我对 TypeScript 的理解是该语言是强类型的,所以不应该以这种方式进行转换?
<input id="EvalLikelihood_1" name="EvalLikelihood" type="radio" value="1" checked={this.state.EvalLikelihood == 1} onChange={this.handleChange}/>
private handleChange(event): void {
const target = event.target;
console.log(parseInt(target.value));
const value = target.type === 'radio' ? target.value : parseInt(target.value);
const name = target.name;
this.setState({
[name]: value
});
console.log(typeof this.state.EvalLikelihood)
console.log(this.state.EvalLikelihood)
}
this.state = {
EvalLikelihood: 0,
safety: 0,
security: 0,
enviroment: 0,
finance: 0,
operational: 0,
legal: 0,
reputation: 0,
inherentRisk: 0
};
EvalLikelihood: number;
感谢您查看此问题。
最佳答案
您的三元运算符行有问题。
const value = target.type === 'radio' ? target.value : parseInt(target.value);
在这里,您查看target.type
,如果它肯定是radio
,它将返回当前值,即字符串。在这种情况下,您不需要三元运算符
,因为您的输入
具有radio
类型,因此您只需将其字符串值转换为数字
。
解决方案很简单:将上面的行替换为:
const value = parseInt(target.value, 10)
关于javascript - 使用 parseInt 转换单选按钮会返回一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49813792/