ein Timeout in reactjs stoppen?

8

Gibt es eine Möglichkeit, ein Timeout in reactjs zu töten / (loswerden)?

%Vor%

Nach einer Art von Klick oder Aktion möchte ich das Zeitlimit vollständig anhalten und beenden können. Gibt es eine Möglichkeit, dies zu tun? Danke.

    
BlueElixir 08.04.2015, 22:55
quelle

4 Antworten

9

Sie sollten Mixins verwenden:

%Vor%

... und in Ihrer Komponente:

%Vor%

Weitere Informationen: Ссылка

    
Tomasz Szuba 21.12.2015, 12:11
quelle
8

Wenn dies in einer Komponente geschieht, speichern Sie die Timeout-ID, damit sie später abgebrochen werden kann. Andernfalls müssen Sie die ID an einem anderen Ort speichern, auf den später zugegriffen werden kann, z. B. ein externes Speicherobjekt.

%Vor%

Sie werden wahrscheinlich auch sicherstellen wollen, dass ein ausstehendes Timeout in componentWillUnmount() ebenfalls abgebrochen wird:

%Vor%

Wenn Sie eine Benutzeroberfläche haben, die davon abhängt, ob ein Timeout aussteht oder nicht, sollten Sie die ID stattdessen im entsprechenden Komponentenstatus speichern.

    
Jonny Buchanan 09.04.2015 08:48
quelle
7

Da React-Mixins jetzt veraltet sind, sehen Sie hier ein Beispiel für eine Komponente höherer Ordnung, die eine andere Komponente umschließt, um die gleiche Funktionalität wie in der angenommenen Antwort zu erhalten. Es räumt sauber alle verbleibenden Timeouts beim Unmounten auf und gibt der untergeordneten Komponente eine API, um diese über Requisiten zu verwalten.

Dies verwendet ES6-Klassen und die Komponentenzusammensetzung , die die empfohlene Methode zum Ersetzen von Mixins ist im Jahr 2017.

In Timeout.jsx

%Vor%

In MyComponent.jsx

%Vor%     
jmgem 22.06.2017 06:08
quelle
1

Ich habe ein setTimeout in meiner Reaktions-App nur mit Javascript gestoppt:

(Mein Anwendungsfall war das automatische Speichern nur nach drei Sekunden ohne Tastenbetätigungen)

%Vor%     
Ben Cochrane 29.03.2018 03:42
quelle

Tags und Links