2017-05-04 2 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) => { 
    let str = e.target.value.trim(); 
    if(str != this.state.q) { 
    this.setState({ 
     q: str 
    }); 
    } 
} 

이것은 q의 기존 상태로 손질 입력을 비교합니다


handleSearchQuery = (e) => { 
어쨌든, 이것은 내가 모든 기능을 작성하는 방법입니다. 동등하다면 아무 일도 일어나지 않습니다. 그렇지 않으면 상태를 업데이트하십시오.

문자열의 결과를 변수에 저장하고 그렇지 않은 경우 trim()을 두 번 사용해야합니다.

+0

부주의 한 실수 –

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