摘要:中使用做輪詢由于是在內(nèi)存中運(yùn)行,所以即使是對象已經(jīng)被銷毀了,如果在組件卸載的時候沒有清楚掉定時器,做循環(huán)還是會在內(nèi)存中一直運(yùn)行是指向定時器的指針每次執(zhí)行都需要更新這個指針只有在表格數(shù)據(jù)返回之后才能再請求數(shù)據(jù)目標(biāo)使用獲取數(shù)據(jù)請求數(shù)據(jù)的方法如果
React中使用setTimeout
setTimeout做輪詢React由于是在內(nèi)存中運(yùn)行,所以即使是DOM對象已經(jīng)被銷毀了,如果在組件卸載(componentWillUnmount)的時候沒有清楚掉定時器, setTimeout做循環(huán)還是會在內(nèi)存中一直運(yùn)行
componentWillUnmount() { this.state.brush && clearTimeout(this.state.brush) }
2.this.state.brush是指向定時器的指針 每次 setTimeout執(zhí)行都需要更新這個指針
brushData = (time = this.state.brushtime, formdata = { wfid: this.state.wfid, begintime: this.state.time }) => { var brush = setTimeout(this.brushData, time * 5 * 1000); this.setState({brush}) // 只有在表格數(shù)據(jù)返回之后才能再請求數(shù)據(jù) this.state.tableLoading || this.getPageData({...formdata}, true) }目標(biāo)
使用setTimeout獲取數(shù)據(jù)
請求數(shù)據(jù)的方法
getPageData = (formdata, brushing) => { // brushing 如果是自動輪詢獲取數(shù)據(jù)則brushing值為true 避免請求數(shù)據(jù)陷入死循環(huán) 這一步只能有submint事件觸發(fā) 因?yàn)橐卤韱沃? if (this.state.brushtime && !brushing) { // 保存表單值 以便setTImeout的回調(diào)函數(shù)(其實(shí)也就是getPageData)能取得請求數(shù)據(jù)時的參數(shù) formdata && this.setState({wfid: formdata.wfid, time: formdata.begintime}); this.brushData(this.state.brushtime); } else { this.setState({tableLoading: true}) if (!formdata) { // 初次加載 } else { // 緩存當(dāng)前頁面選擇的時間 } } }
循環(huán)的方法
// brushData是回調(diào)函數(shù) 所以參數(shù)只能在當(dāng)前作用域中取得 brushData = (time = this.state.brushtime) => { var brush = setTimeout(this.brushData, time * 5 * 1000); this.setState({brush}) // 只有在表格數(shù)據(jù)返回之后才能再請求數(shù)據(jù) 并且在刷新頁面數(shù)據(jù)的時候表單值傳入null使請求數(shù)據(jù)的函數(shù)直接從state中取相應(yīng)的表單值 this.state.tableLoading || this.getPageData(null, true) }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84356.html
摘要:而不是在方法中在通過來獲取使用回調(diào)函數(shù)方法接收一個作為回調(diào)函數(shù)。這樣子直接輸出,回調(diào)函數(shù),對比如果默認(rèn)為輸入的結(jié)果是和渲染無關(guān)的狀態(tài)盡量不要放在中來管理通常中只來管理和渲染有關(guān)的狀態(tài),從而保證改變的狀態(tài)都是和渲染有關(guān)的狀態(tài)。 原文: https://medium.com/@mweststra...作者: Michel Weststrate 前言 這篇文章原標(biāo)題是3 Reasons w...
摘要:接上一篇文章深入理解核心模塊鉤子同步版中三個注冊方法同步注冊的是中對三個觸發(fā)方法這一章節(jié)我們將分別實(shí)現(xiàn)異步的版本和版本異步鉤子的版本的版本的版本異步的鉤子分為并行和串行的鉤子,并行是指等待所有并發(fā)的異步事件執(zhí)行之后再執(zhí)行最終的異步回調(diào)。 接上一篇文章 深入理解Webpack核心模塊WTApable鉤子(同步版) tapable中三個注冊方法 1 tap(同步) 2 tapAsync(...
摘要:函數(shù)組件與類有何不同有一段時間,規(guī)范的答案是類可以訪問更多功能如狀態(tài)。那么功能性函數(shù)和類是否又根本的區(qū)別函數(shù)組件捕獲的值。假設(shè)功能組件不存在。在我到目前為止看到的所有情況中,由于錯誤地假設(shè)功能不會改變或總是相同,所以會出現(xiàn)陳舊的封閉問題。 React函數(shù)組件與React類有何不同? 有一段時間,規(guī)范的答案是類可以訪問更多功能(如狀態(tài))。但是自從有了Hook后,這個答案變得不唯一了。 也...
摘要:函數(shù)組件與類有何不同有一段時間,規(guī)范的答案是類可以訪問更多功能如狀態(tài)。那么功能性函數(shù)和類是否又根本的區(qū)別函數(shù)組件捕獲的值。假設(shè)功能組件不存在。在我到目前為止看到的所有情況中,由于錯誤地假設(shè)功能不會改變或總是相同,所以會出現(xiàn)陳舊的封閉問題。 React函數(shù)組件與React類有何不同? 有一段時間,規(guī)范的答案是類可以訪問更多功能(如狀態(tài))。但是自從有了Hook后,這個答案變得不唯一了。 也...
摘要:函數(shù)組件與類有何不同有一段時間,規(guī)范的答案是類可以訪問更多功能如狀態(tài)。那么功能性函數(shù)和類是否又根本的區(qū)別函數(shù)組件捕獲的值。假設(shè)功能組件不存在。在我到目前為止看到的所有情況中,由于錯誤地假設(shè)功能不會改變或總是相同,所以會出現(xiàn)陳舊的封閉問題。 React函數(shù)組件與React類有何不同? 有一段時間,規(guī)范的答案是類可以訪問更多功能(如狀態(tài))。但是自從有了Hook后,這個答案變得不唯一了。 也...
閱讀 1660·2021-09-28 09:35
閱讀 1131·2019-08-30 15:54
閱讀 1657·2019-08-30 15:44
閱讀 3363·2019-08-30 14:09
閱讀 488·2019-08-29 14:05
閱讀 2662·2019-08-28 17:53
閱讀 1978·2019-08-26 13:41
閱讀 1710·2019-08-26 13:26