我在我的ReactJS应用程序中创建了一个setInterval,稍后当组件卸载时我需要清除它。因此,我无法使用以下代码实现此目标:
var Timer = React.createClass ({
getInitialState: function () {
return ({
timeLeft: "99:99:99"
})
},
componentDidMount: function () {
var compteur = setInterval( function () {
var heure = new Date();
var timeH = ((0 + this.props.endH - heure.getHours()) > 9) ? (0 + this.props.endH - heure.getHours()) : ("0" + (0 + this.props.endH - heure.getHours())) ;
var timeM = ((0 + this.props.endM - heure.getMinutes()) > 9) ? (0 + this.props.endM - heure.getMinutes()) : ("0" + (0 + this.props.endM - heure.getMinutes())) ;
var timeS = ((0 + this.props.endS - heure.getSeconds()) > 9) ? (0 + this.props.endS - heure.getSeconds()) : ("0" + (0 + this.props.endS - heure.getSeconds())) ;
this.setState({
timeH: timeH,
timeM: timeM,
timeS: timeS
});
this.setState ({
timeLeft: this.state.timeH + ":" + this.state.timeM + ":" + this.state.timeS
})
}.bind(this), 900);
compteur;
},
componentWillUnmount: function () {
console.log("Unmounting Timer...");
clearInterval(this.compteur);
this.compteur = false;
},
render: function() {
return (
<div className="time-count">{this.state.timeLeft}</div>
)
}
});
问题是,当我尝试通过clearInterval(compteur)
设置间隔后立即清除时间间隔时,它可以正常工作。但是,当我后来尝试使用clearInterval(this.compteur)
时,它就不会。
谢谢!
答案 0 :(得分:1)
当你像这样声明compteur
时,你就知道这是一个普通变量,已经变成了componentDidMount
函数。
只需替换
var compteur = setInterval( function () {
与
this.compteus = setInterval( function () {
您可以从this.compteur
功能访问componentWillUnmount
。