我有一個輔助函式connected(),這個函式用來測驗用戶是否在線。如果離線,則回傳 false。我有這個螞蟻設計模式,我試圖在可見道具中呼叫這個函式,以便在用戶未連接時隱藏模式。我不確定我做對了。是否也有必要使用 useEffect ?關于如何實作此結果的任何想法
export const connected = async () => {
try {
const online = await fetch('/connection');
return online.status >= 200 && online.status < 300
} catch (err) {
return false
}
}
<Modal
title={test}
centered
visible={connected() ? isVisible : false}
closable={true}
onCancel={closeModal}
width={400}
>
<p>test</p>
</Modal>
uj5u.com熱心網友回復:
你做錯了,讓我解釋一下原因。
你的函式connected
回傳 Promise,當你使用 Promise 時,你應該要么wait
完成 P??romise,要么使用 Promise.prototype.then 和 Promise.prototype.catch。
現在您modal
將始終可見,因為 connected() 回傳一個 Promise(),而不是有效的布林值。
要使其作業,您可以使用以下方法之一:
方法一:使用await
const conntectedValue = await conntected();
方法二:使用 Promose.prototype.then()
和.catch()
let connectedStatus = false;
connected().then(() => {
connectedStatus = true;
}).catch(() => {
connectedStatus = false;
})
或者您可以使用它events
來檢查連接性。
window.addEventListener('offline', (e) => { console.log('offline'); });
window.addEventListener('online', (e) => { console.log('online'); });
我希望我解釋清楚。
uj5u.com熱心網友回復:
看一下navigator.onLine
檢查連接狀態的基本代碼:
if (navigator.onLine) {
console.log('online');
} else {
console.log('offline');
}
檔案鏈接:https ://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/508315.html
標籤:javascript 反应 蚂蚁