Javascript 如果输入字符串有空格,则阻止状态更新

Javascript 如果输入字符串有空格,则阻止状态更新,javascript,reactjs,Javascript,Reactjs,我下面的代码有什么问题?基本上,当用户在开始或结束时输入额外空间时,我不想更新我的状态 handleSearchQuery = (e) = { if(e.target.value.trim() != "") { this.setState({ q: e.target.value }); } } 第一个错误似乎是您忘记了arrow函数中的。将第一行更改为: handleSearchQuery = (e) => { 无论如何,我将这样编写整个函数: h

我下面的代码有什么问题?基本上,当用户在开始或结束时输入额外空间时,我不想更新我的状态

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

第一个错误似乎是您忘记了arrow函数中的
。将第一行更改为:

handleSearchQuery = (e) => {

无论如何,我将这样编写整个函数:

handleSearchQuery = (e) => {
  let str = e.target.value.trim();
  if(str != this.state.q) {
    this.setState({
      q: str
    });
  }
}
这会将修剪后的输入与
q
的现有状态进行比较。如果他们相等,什么也不会发生。否则,请更新状态


我将字符串的修剪结果存储在变量中,否则我需要
trim()
两次。。。不管它值多少钱。

简单解决方案-
handleSearchQueury=(e)=>this.setState({q:e.target.value.trim()})
@NirH,这将导致重新渲染,即使新的(修剪的)值等于旧的值。这不会,我建议读一点关于虚拟dom和协调的内容-哎哟,粗心的错误
handleSearchQuery = (e) => {
  if(e.target.value.trim() != this.state.q) {
    this.setState({
      q: e.target.value
    });
  }
}