2017-12-20 33 views
0

Ich versuche, die Lodash-Drosselfunktion zu verwenden, um das onChangeText-Ereignis bei einer Texteingabe zu drosseln. Es scheint jedoch keinen Unterschied zu machen:Verwenden von Lodash _.throttle() mit ReactJS

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

Wie kann ich das schaffen? Jedes Mal, wenn ich etwas in die Eingabe tippe, wird bei jeder Änderung onChangeText() ausgeführt.

+0

Das liegt daran, dass Sie onChangeText gleich dem Rückgabewert der Funktion einstellen, nicht der Funktion. Das bedeutet, jedes Mal, wenn es neu gerendert wird, wird die Drosselfunktion ausgeführt. Sollte wie 'onChangeText = {(text) => {/ * mach hier drohnen * /}} ' – Jayce444

+0

@ Jayce444 Ich änderte es in' onChangeText = {(text) => {_.throttle ((text) => { this.onChangeText (Text) }, 1000)}} '. Jetzt wird die onChangeText-Methode überhaupt nicht ausgeführt. Können Sie mir ein Beispiel geben, wie die Implementierung aussehen sollte? –

+1

@ Jayce444 '_.throttle' ** gibt eine Funktion zurück ** – Li357

Antwort

0

onChange muss eine Funktion sein, aber in Ihrem Kontext ist es ein Funktionsaufruf. Um das Problem zu lösen, müssen Sie also Folgendes tun:

+0

Das tut nichts. Die Methode onChangeText() wird überhaupt nicht ausgeführt. –

+0

'_.throttle' ** gibt eine Funktion zurück ** – Li357

+0

Dann ist onChangeText die falsche Methode. Vielleicht ist es nur auf Change? – Tobias