Ich bin noch ziemlich neu bei React, aber ich habe mich langsam weiterentwickelt und bin auf etwas gestoßen, an dem ich festgefahren bin.
Ich versuche, eine "Timer" -Komponente in React zu erstellen, und um ehrlich zu sein, weiß ich nicht, ob ich das richtig (oder effizient) mache. In meinem Code unten habe ich den Status so festgelegt, dass er ein Objekt { currentCount: 10 }
zurückgibt und mit dem er gespielt componentDidMount
hat componentWillUnmount
, render
und ich kann den Status nur dazu bringen, von 10 auf 9 "herunterzuzählen".
Zweiteilige Frage: Was mache ich falsch? Und gibt es eine effizientere Möglichkeit, setTimeout zu verwenden (anstatt componentDidMount
& componentWillUnmount
)?
Vielen Dank im Voraus.
import React from 'react';
var Clock = React.createClass({
getInitialState: function() {
return { currentCount: 10 };
},
componentDidMount: function() {
this.countdown = setInterval(this.timer, 1000);
},
componentWillUnmount: function() {
clearInterval(this.countdown);
},
timer: function() {
this.setState({ currentCount: 10 });
},
render: function() {
var displayCount = this.state.currentCount--;
return (
<section>
{displayCount}
</section>
);
}
});
module.exports = Clock;
this.timer.bind(this)
als this.timer allein hat nicht funktioniert
class Clock extends Component
automatisch, bindet sie jedoch nicht automatisch. Es hängt also davon ab, wie Sie Ihre Komponenten erstellen, ob Sie binden müssen.
bind(this)
wird nicht mehr benötigt, reagieren macht das jetzt alleine.