2017-04-24 13 views
0

componentWillUnmountでクリアしようとしているsetIntervalがあります。ReactJSが正しくクリアされない

refreshTime =() => { 
    this.setState({ 
     currentTime: this.renderCurrentTime() 
    }); 
} 

console.logログが、私はまだ部品アンマウント後setStateエラーが表示されます。

componentDidMount() { 
    setInterval(this.refreshTime, 1000); 
} 

componentWillUnmount() { 
    clearInterval(this.refreshTime); 
    console.log('cleared interval'); 
} 

そして、ここでは良い測定のための私のrefreshTimeです。

warning.js?8a56:36 Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component.

アイデア?あなたは正しい方法でてclearIntervalを使用していない

componentDidMount() { 
    this.refreshInterval = setInterval(this.refreshTime, 1000); 
} 

componentWillUnmount() { 
    clearInterval(this.refreshInterval); 
    console.log('cleared interval'); 
} 

答えて

1

あなたがたsetIntervalの戻り値を格納し、それをクリアする必要があります。 setIntervalの戻り値は、間隔をクリアする必要がある対応するメソッドclearIntervalに渡す必要があります。

var intervalID = setInterval(func, delay[, param1, param2, ...]); 
clearInterval(intervalID); 
関連する問題