react專案全域性loading實現
阿新 • • 發佈:2021-01-11
最近在做一個後臺管理系統供內部人員使用,互動性沒有那麼強,所以對於每個頁面請求時要加loading,感覺要寫的比較麻煩,然後去百度了下能不能全域性實現loading:
需要loading的請求發出後,讓loading顯示,請求後無論成功還是失敗就讓loading關閉
大概程式碼如下:
const { request } = require("http") //當前正在請求的數量 letrequestCount=0 //顯示loading constshowLoading=()=>{ if(requestCount===0){//解決一個頁面多個介面請求需要loading constdom=document.createElement('div') dom.setAttribute('id','loading') document.body.appendChild(dom) ReactDOM.render(<Spintip="載入中"size="large"/>,dom) } requestCount++ } //隱藏loading consthideLoading=()=>{ requestCount-- if(requestCount===0){ document.body.removeChild(document.getElementById('loading')) } } // eg: if (options?.headers?.isLoading) { showLoading() } fetch().then(()=> { if (options?.headers?.isLoading) { hideLoading() } // DO SOME }).catch(() => { if (options?.headers?.isLoading) { hideLoading() } }) // 外部呼叫 request(url, { headers: { isLoading: true } })