javascript - 使用 parseInt 转换单选按钮会返回一个字符串

标签 javascript reactjs typescript

我有一组使用以下方法设置的单选按钮。在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)

Worked example .

关于javascript - 使用 parseInt 转换单选按钮会返回一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49813792/

相关文章:

typescript - 如何将 ionic 中的录音实时流式传输到 Firebase?

javascript - Emberjs-1.0 组件和 Controller 中的计算属性

javascript - Html 正文中的样式和脚本

javascript - 解构传递给子函数的属性

typescript - 在 Typescript 中使用 ECMA6 数组方法?

javascript - 如何在 typescript 中将参数传递给内部和外部函数?

javascript - Bootstrap 3 - 使用 json 加载表中的链接

javascript - 将 JS 添加到 HTML

reactjs - React-Bootstrap 中的间距和边距实用程序

javascript - 找不到 react