React işlevinde temel bir zamanlayıcı var sayıyorum. Tek sorun, 'saniye' moduna geçmeden önce, zamanlayıcının saniye sayısı '00' a ulaştığında, bir saniye daha (ya da iki) asılı kalmasıdır. Sanırım eyalette hala rahat değilim, çünkü bazı ciddi hata ayıklama işlemleri yaptım ve problemi çözemiyorum.Tepki zamanlayıcısı açık: 00 (durum güncellenmiyor)
Herhangi bir yardım çok takdir edilmektedir. Teşekkür ederim.
Kodu: fonksiyonu işlemek ve aşırı kene kullanarak Görüntülü mantığı (dakika ve saniye için sol dolgu sıfır) tutmak için
const Clock = React.createClass({
getInitialState: function() {
return { currentCount: this.props.minutes, seconds: 10 };
},
startTimer: function() {
var intervalId = setInterval(this.timer, 1000);
this.setState({ intervalId: intervalId, minutes: this.state.currentCount - 1 });
},
pauseTimer: function() {
clearInterval(this.state.intervalId);
this.setState({ intervalId: this.props.minutes });
},
timer: function() {
var minutes = this.state.minutes;
var seconds = this.state.seconds;
if (seconds === '00') {
this.setState({ minutes: '0' + minutes - 1, seconds: 60 });
this.setState({ currentCount: minutes + ':' + seconds });
console.log('min: ' + minutes, 'sec: ' + seconds);
} else {
seconds--;
seconds = seconds < 10 ? '0' + seconds : seconds;
minutes = minutes < 10 ? '0' + minutes : minutes;
this.setState({ currentCount: minutes + ':' + seconds, minutes: this.state.minutes, seconds: seconds });
}
},
componentWillReceiveProps: function(nextProps) {
this.setState({ currentCount: nextProps.minutes });
},
render: function() {
return (
<section>
<button onClick={this.startTimer}>Start</button>
<button onClick={this.pauseTimer}>Pause</button>
<br></br>
{this.state.currentCount}
</section>
);
}
});
module.exports = Clock;
bir sınır kontrolü var mı: Örneğin yerine 60 59 saniye ile dakikalar? Saniye, 59'a sıfırlamak zorunda kaldı. Dakikalar ne zaman sıfırlanıyor? – Sparky256
Şu anda mevcut değil, fakat bu orijinal kodda da mevcut değildi. Sadece 'time.pauseTimer()' '' timer' fonksiyonunda 'dakika === 0 && saniye === 0' komutunu çalıştırın. –
[Eğer dakika <= 0] 'a ihtiyaç var mı? – Sparky256