我的代碼在下面有什麼問題?基本上我不想在用戶在開頭或結尾輸入額外空間時更新我的狀態。如果輸入字符串有空格,防止狀態更新
handleSearchQuery = (e) = {
if(e.target.value.trim() != "") {
this.setState({
q: e.target.value
});
}
}
我的代碼在下面有什麼問題?基本上我不想在用戶在開頭或結尾輸入額外空間時更新我的狀態。如果輸入字符串有空格,防止狀態更新
handleSearchQuery = (e) = {
if(e.target.value.trim() != "") {
this.setState({
q: e.target.value
});
}
}
第一個錯誤似乎是您在您的箭頭功能中忘記了>
。更改第一行:
handleSearchQuery = (e) => {
無論如何,這是我會怎麼寫全功能:
handleSearchQuery = (e) => {
let str = e.target.value.trim();
if(str != this.state.q) {
this.setState({
q: str
});
}
}
這修剪輸入比較的q
現有狀態。如果他們是平等的,沒有任何反應。否則,更新狀態。
我將字符串的修剪後的結果存儲在一個變量中,因爲我會另外需要trim()
兩次......無論什麼值得。
ouch不小心的錯誤 –
handleSearchQuery = (e) => {
if(e.target.value.trim() != this.state.q) {
this.setState({
q: e.target.value
});
}
}
簡單的解決方案 - 'handleSearchQueury =(E)=> this.setState({Q:e.target.value.trim()})' –
@NirH,這將導致即使在重新繪製新的(修剪)值等於舊的。 – Chris
它不會,我建議閱讀一下虛擬主機和和解 - https://facebook.github.io/react/docs/reconciliation.html –