更改时输入的setState - 无法从输入中删除

时间:2016-07-28 13:00:49

标签: javascript reactjs

我有input

 <input type="text" value={this.state.current} onChange={this.handleChange.bind(this)} />

handleChange()方法:

handleChange(e) {
  let val = parseInt(e.target.value); 
  if (val) {
    this.set(val);
  }
}

set()方法(状态为1到5之间的简单集合号):

set(val = 1) {
  if (val < 1) {
    val = 1;
  }
  if (val > 5) {
    val = 5;
  }
  this.setState({ current: val });
}

我的问题是:当我想改变输入值时,我无法从中删除数字。我认为在删除号码后,它是从imediatly州自动填写的。我的代码中的问题在哪里?

exsple on jsFiddle:https://jsfiddle.net/4sc3p2ny/

2 个答案:

答案 0 :(得分:4)

当您尝试从输入中完全删除值时,e.target.value返回'',在这种情况下,parseInt(e.target.value)会返回NaN,因为parseInt('')会返回NaN你需要检查它并将current设置为空字符串

 handleChange(e) {
   let val = parseInt(e.target.value);

   if (isNaN(val)) {
     this.setState({ current: '' });
   } else {
     if (val < 1) {
       val = 1;
     }

     if (val) {
       this.set(val);
     }
   }
 }

this

答案 1 :(得分:-1)

value={this.state.current}元素

中删除input