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 );