2017-05-04 100 views
1

我的代码在下面有什么问题?基本上我不想在用户在开头或结尾输入额外空间时更新我的​​状态。如果输入字符串有空格,防止状态更新

handleSearchQuery = (e) = { 
    if(e.target.value.trim() != "") { 
    this.setState({ 
     q: e.target.value 
    }); 
    } 
} 
+0

简单的解决方案 - 'handleSearchQueury =(E)=> this.setState({Q:e.target.value.trim()})' –

+0

@NirH,这将导致即使在重新绘制新的(修剪)值等于旧的。 – Chris

+0

它不会,我建议阅读一下虚拟主机和和解 - https://facebook.github.io/react/docs/reconciliation.html –

回答

2

第一个错误似乎是您在您的箭头功能中忘记了>。更改第一行:

handleSearchQuery = (e) => { 

无论如何,这是我会怎么写全功能:

handleSearchQuery = (e) => { 
    let str = e.target.value.trim(); 
    if(str != this.state.q) { 
    this.setState({ 
     q: str 
    }); 
    } 
} 

这修剪输入比较的q现有状态。如果他们是平等的,没有任何反应。否则,更新状态。

我将字符串的修剪后的结果存储在一个变量中,因为我会另外需要trim()两次......无论什么值得。

+0

ouch不小心的错误 –

0
handleSearchQuery = (e) => { 
    if(e.target.value.trim() != this.state.q) { 
    this.setState({ 
     q: e.target.value 
    }); 
    } 
}