2017-04-24 1 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); 
관련 문제