2017-08-09 29 views
2

Ich möchte die lodash debouce Methode verwenden, um die UX eines Kunden zu verbessern, wenn sie Eingabe in einem Eingabefeld eingeben. Aus irgendeinem Grund gibt die Entprellfunktion nicht den Wert der entprellten Funktion zurück.lodash debounce nicht feuern Funktion

Kann jemand erkennen, was falsch ist?

import debounce from "lodash/debounce"; 


render() { 

    const inputValid =() => { 
     console.log('triggered'); 
     return this.state.input.length > 0; 
    }; 

    let d = debounce(inputValid, 100); 
    d(); 
    console.log(d()); // this gets logged as undefined although I 
        //thought it would be either true or false 

    return <input onChange="updateInput" value={this.state.input} />; 

} 

Antwort

1

debounce unterbricht den synchronen Programmablauf und macht ihn asynchron. Sie können nicht einfach den Rückgabewert davon erhalten. Sie sollten diese ein Check-out:

How do I return the response from an asynchronous call?

Aber Ihr Beispiel sieht für diesen usecase auch schlecht konzipiert. Für eine deterministische Rendermethode erhalten Sie diese Informationen einfach im Flow ohne den entprellten Handler. Sie sollten nur zum Zeitpunkt des Renderzyklus gegen den Status rendern.

Die entprellte Funktion sollte nur verwendet werden, um einen setState nach einem onChange-Ereignis auszulösen.

Verwandte Themen