Javascript 未正确清除间隔
我有一个Javascript 未正确清除间隔,javascript,reactjs,Javascript,Reactjs,我有一个setInterval,我试图在组件上清除它将卸载 componentDidMount() { setInterval(this.refreshTime, 1000); } componentWillUnmount() { clearInterval(this.refreshTime); console.log('cleared interval'); } 以下是我的刷新时间,以供参考: refreshTime = () => { this.se
setInterval
,我试图在组件上清除它将卸载
componentDidMount() {
setInterval(this.refreshTime, 1000);
}
componentWillUnmount() {
clearInterval(this.refreshTime);
console.log('cleared interval');
}
以下是我的刷新时间
,以供参考:
refreshTime = () => {
this.setState({
currentTime: this.renderCurrentTime()
});
}
console.log
会记录日志,但一旦组件卸载,我仍然会收到setState
错误
warning.js?8a56:36警告:设置状态(…):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了setState()。
想法?您需要存储setInterval的返回值并清除:
componentDidMount() {
this.refreshInterval = setInterval(this.refreshTime, 1000);
}
componentWillUnmount() {
clearInterval(this.refreshInterval);
console.log('cleared interval');
}
您没有以正确的方式使用clearInterval。setInterval
的返回值需要传递到相应的方法clearInterval
,您需要在该方法中清除间隔
var intervalID = setInterval(func, delay[, param1, param2, ...]);
clearInterval(intervalID );