erstellen Sie timer mit react native Verwendung von es6
Ich bin auf der Suche hinzufügen, einen timer, um meine app, die aufgebaut ist mit react native.
Ich habe mir den link zu der timer-mixin in der Dokumentation allerdings habe ich gebaut, der rest der app mit es6 so wird dies nicht kompatibel.
Ich habe versucht die unten.
In meiner Main-Klasse habe ich eine Funktion namens getTimerCountDown
getTimerCountDown() {
setTimeout(() => {
this.setTimeRemaining(this.getTimeRem()-1);
}, 1000);
}
getTimeRem() {
return this.state.timeRemaining;
}
Habe ich versucht, Sie anzurufen, diese in componentDidUpdate
wie unten gezeigt. Dies funktioniert wie ich es will, wenn ich das nicht machen, alle anderen Interaktionen mit der Benutzeroberfläche.
Wenn ich (z.B. ich habe einen button, den ich klicken kann, auf der Ansicht.) als " componentDidUpdate aufgerufen wird, wird wieder die conunter bekommt wirklich schnell (wie es immer genannt x mal)
componentDidUpdate(){
this.getTimerCountDown();
}
Ich bin nicht sicher, ob ich bin komplett auf dem Holzweg hier oder eine kleine änderung was ich gemacht habe, können mir, was ich will.
Was ist der beste Weg, um einen countdown-timer arbeiten, reagieren die einheimischen mit es6?
Timer-Klasse
auf der main Seite
<Timer timeRem={this.getTimeRem()} />
gibt
render(){
return (
<View style={styles.container}>
<Text> This is the Timer : {this.props.setTimer} - {this.props.timeRem} </Text>
</View>
)
}
- versuchen Sie, ändern Sie Ihre getTimerCountdown und machen es zurück
setState()
- Was Teil der
TimerMixin
ist nicht kompatibel? Die docs für die es sogar ein es6 Beispiel
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht wirklich sicher, wie das funktionieren würde, auch ohne jede andere UI-Interaktionen.
componentDidUpdate
wird jedesmal aufgerufen, wenn die Komponente neu gerendert, was passiert, wenn der innere Zustand oder weitergegeben Requisiten haben sich geändert. Nicht etwas, das Sie zählen können, zu passieren, genau jede Sekunde.Wie über das verschieben der
getTimerCountDown
zu IhremcomponentDidMount
Methode (die nur einmal aufgerufen) und dann mitsetInterval
stattsetTimeout
um sicherzustellen, dass der Zähler wird dekrementiert kontinuierlich?clearInterval
wie gewohnt. Nicht, dass die Antwort auf Ihre Frage?Ein bisschen spät, aber können Sie versuchen, diese Komponente habe ich für den Umgang mit Timern und es6 Komponenten reagieren-native:
https://github.com/fractaltech/react-native-timer
Idee ist einfach, die Pflege und die clearing-timer-Variablen auf die Komponenten ist ein Schmerz, so einfach, behalten Sie Sie in ein separates Modul. Beispiel:
Versuchen, diese
Timer.js
App.js