我想在react中基于類的組件中,當組件被卸載時清除一個間隔。我對此做了一些研究,看到在 componentWillUnmount 生命周期函式中,人們將實際的函式存盤在一個變數中,而不是直接清除區間。例如:
componentDidMount(/span>) {
const { stock } = this.props。
//在用戶進入頁面后獲取資料。
this.fetchData(stock)。
//每小時獲取一次資料。
setInterval(() => {
this.fetchData(stock)。
console.log(' setInterval ran')。
}, 3600000)。)
}
componentWillUnmount() {
const { stock } = this.props。
//洗掉區間。
const refreshFetch = clearInterval(this.fetchData(stock))。
console.log(' setInterval cleared')。
}
async fetchData(stock) {
const data = await getAvgPriceHistory(Stock);
if (data && data[stock].length) {
const dataArray = data[stock].map((arr) => {
return arr[1] 。
}).reverse()。
this.setState({
data: dataArray,
isLoaded: true。
});
} else {
//直線,如果沒有發現。
this.setState({
data: [1, 1] 。
isLoaded: true
});
}
console.log('Data fetched! ')。
}
同時,我習慣于在componentWillUnmount函式中這樣做,而不需要像這樣定義一個變數:
componentWillUnmount() {
const { stock } = this.props。
//洗掉區間。
clearInterval(this.fetchData(stock))。
console.log(' setInterval cleared')。
}
這樣做有什么好處嗎?
uj5u.com熱心網友回復:
setInterval回傳一個id。你可以用它與clearInterval一起使用來銷毀它。
https://developer.mozilla.org/en-US/docs/Web/API/setInterval
let intervalId;
...
intervalId = setInterval(fn, time);
...
clearInterval(intervalId)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/326895.html
標籤:
上一篇:使用python進行曲線擬合
下一篇:引數丟失或值為空laravel
