Sono ancora abbastanza nuovo in React, ma ho rallentato lentamente e ho incontrato qualcosa su cui sono bloccato.setInterval in una app React
Sto provando a costruire un componente "timer" in React e, sinceramente, non so se lo sto facendo correttamente (o in modo efficiente). Nel mio codice qui sotto, ho impostato lo stato per restituire un oggetto { currentCount: 10 }
e hanno accarezzato componentDidMount
, componentWillUnmount
e render
e posso ottenere solo lo Stato a "conto alla rovescia" da 10 a 9.
due parti domanda : Cosa sto sbagliando? E, c'è un modo più efficiente di usare setTimeout (piuttosto che usare componentDidMount
componentWillUnmount
)?
Grazie in anticipo.
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;
'bind (questo)' non è più necessario, reagire fa questo da solo ora. – Derek
il tuo metodo timer non aggiorna currentCount –
@Derek sei sicuro? Ho appena ottenuto il mio lavoro aggiungendo 'this.timer.bind (this)' come questo.timer su di esso non ha funzionato –