Ainda sou bastante novo no React, mas tenho trabalhado lentamente e encontrei algo em que estou preso.
Estou tentando construir um componente "cronômetro" no React e, para ser honesto, não sei se estou fazendo isso da maneira certa (ou eficiente). No meu código abaixo, eu definir o estado para retornar um objeto { currentCount: 10 }
e foram brincar com componentDidMount
, componentWillUnmount
e, render
e eu só pode obter o estado a "contagem regressiva" 10-9.
Pergunta de duas partes: O que estou entendendo de errado? E há uma maneira mais eficiente de usar setTimeout (em vez de usar componentDidMount
& componentWillUnmount
)?
Agradeço antecipadamente.
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)
como this.timer sozinho não funcionou
class Clock extends Component
não liga automaticamente. Portanto, depende de como você está criando seus componentes se você precisa ligá-los.
bind(this)
não é mais necessário, o Reagir faz isso sozinho agora.