2017-05-04 73 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 
    }); 
    } 
}