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

mwl*_*mwl 3 javascript reactjs

我有一个input

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

handleChange() 方法:

handleChange(e) {
  let val = parseInt(e.target.value); 
  if (val) {
    this.set(val);
  }
}
Run Code Online (Sandbox Code Playgroud)

set()方法(状态的简单设置编号介于1到5之间):

set(val = 1) {
  if (val < 1) {
    val = 1;
  }
  if (val > 5) {
    val = 5;
  }
  this.setState({ current: val });
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:当我想更改输入中的值时,我无法从中删除数字。我认为删除号码后立即从状态自动填充。我的代码中的问题出在哪里?

jsFiddle上的示例:https://jsfiddle.net/4sc3p2ny/

Ale*_* T. 6

当你试图完全删除输入值,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);
     }
   }
 }
Run Code Online (Sandbox Code Playgroud)

Example