2017-12-20 32 views
0

Lodash 스로틀 기능을 사용하여 텍스트 입력에서 onChangeText 이벤트를 제한하려고합니다. 그래도 아무런 차이가없는 것 같습니다.Lodash _.throttle() with ReactJS 사용

<TextInput {...this.c('tokenInput')} 
    onChangeText={ _.throttle((text) => { 
     this.onChangeText(text) 
    }, 1000) } 
    value={this.state.text} 
    placeholder='Select...' 
/> 

어떻게하면됩니까? 입력 할 때마다 모든 변경 사항과 함께 onChangeText()를 계속 실행합니다.

+0

이는 onChangeText를 함수가 아닌 함수 반환 값으로 설정했기 때문입니다. 즉, 스로틀 기능을 다시 실행 할 때마다이를 의미합니다. – Jayce444

+0

@ Jayce444 onChangeText = {(텍스트) => {_.throttle ((text) => { this.onChangeText (text) }, 1000)}}'. 이제 onChangeText 메서드는 전혀 실행되지 않습니다. 구현 방법에 대한 예를 들어 주시겠습니까? –

+1

@ Jayce444'_.throttle' **는 함수를 반환합니다 ** – Li357

답변

0

onChange는 함수 여야하지만 사용자 컨텍스트에서는 함수 호출입니다. 따라서 문제를 해결하려면 다음과 같이해야합니다.

<TextInput {...this.c('tokenInput')} 
    onChangeText={ text => _.throttle(x => { 
     this.onChangeText(x) 
    }, 1000)(text) } 
    value={this.state.text} 
    placeholder='Select...' 
/> 
+0

아무 것도하지 않습니다. onChangeText() 메서드는 전혀 실행되지 않습니다. –

+0

'_.throttle' **는 함수를 반환합니다 ** – Li357

+0

그러면 onChangeText가 잘못된 방법입니다. 아마 그냥 온거야? – Tobias