아래 코드에 어떤 문제가 있습니까? 기본적으로 사용자가 시작 또는 끝에 추가 공간을 입력 할 때 내 상태를 업데이트하고 싶지 않습니다.입력 문자열에 공백이 있으면 상태가 업데이트되지 않습니다.
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) => {
let str = e.target.value.trim();
if(str != this.state.q) {
this.setState({
q: str
});
}
}
이것은 q
의 기존 상태로 손질 입력을 비교합니다
handleSearchQuery = (e) => {
어쨌든, 이것은 내가 모든 기능을 작성하는 방법입니다. 동등하다면 아무 일도 일어나지 않습니다. 그렇지 않으면 상태를 업데이트하십시오.
문자열의 결과를 변수에 저장하고 그렇지 않은 경우 trim()
을 두 번 사용해야합니다.
부주의 한 실수 –
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 –