【React Native】文件翻譯閱讀紀錄 - APIs - NetInfo
Facebook Open Source React Native |
NetInfo
NetInfo 公開有關在線/離線狀態的信息
NetInfo.getConnectionInfo().then((connectionInfo) => {
console.log('Initial, type: ' + connectionInfo.type + ', effectiveType: ' + connectionInfo.effectiveType);
});
function handleFirstConnectivityChange(connectionInfo) {
console.log('First change, type: ' + connectionInfo.type + ', effectiveType: ' + connectionInfo.effectiveType);
NetInfo.removeEventListener(
'connectionChange',
handleFirstConnectivityChange
);
}
NetInfo.addEventListener(
'connectionChange',
handleFirstConnectivityChange
);
ConnectionType enum
ConnectionType
描述設備用於與網絡通信的連接類型。ConnectionType 的跨平台值:
none
- 設備處於脫機狀態wifi
- 設備在線並通過wifi連接,或者是iOS模擬器cellular
- 設備通過Edge,3G,WiMax或LTE連接unknown
- 錯誤情況和網絡狀態未知
ConnectionType的僅限Android的值:
bluetooth
- 設備通過藍牙連接ethernet
- 設備通過以太網連接wimax
-設備通過WiMAX連接
EffectiveConnectionType enum
EffectiveConnectionType 的跨平台值:
2g
3g
4g
unknown
Android
要請求網絡信息,您需要將以下行添加到應用的 AndroidManifest.xml 中:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Methods
Properties
參考
Methods
addEventListener()
NetInfo.addEventListener(eventName, handler);
添加事件處理程序。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
eventName | enum(connectionChange, change) | Yes | 更改事件名稱。 |
handler | function | Yes | 監聽器功能。 |
支持的活動:
connectionChange
: 網絡狀態更改時觸發。事件處理程序的參數是一個帶鍵的對象:type
: AConnectionType
(如上所列)effectiveType
: AnEffectiveConnectionType
(如上所列)
change
:不推薦使用此事件。請改為聽取connectionChange。網絡狀態更改時觸發。事件處理程序的參數是上面列出的已棄用連接類型之一。
removeEventListener()
NetInfo.removeEventListener(eventName, handler);
刪除偵聽器以進行網絡狀態更改。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
eventName | enum(connectionChange, change) | Yes | 更改事件名稱。 |
handler | function | Yes | 監聽器功能。 |
getConnectionInfo()
NetInfo.getConnectionInfo();
返回一個promise,該promise分別解析為具有 type 和 effectiveType 鍵的對象,其值分別為 ConnectionType 和 EffectiveConnectionType。
isConnectionExpensive()
NetInfo.isConnectionExpensive();
適用於Android。檢測當前活動連接是否已計量。當用戶對該連接上的大量數據使用敏感時,由於貨幣成本,數據限製或電池/性能問題,網絡被分類為計量。
NetInfo.isConnectionExpensive()
.then(isConnectionExpensive => {
console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive'));
})
.catch(error => {
console.error(error);
});
Properties
isConnected
適用於所有平台。異步獲取布爾值以確定Internet連接。
NetInfo.isConnected.fetch().then(isConnected => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
});
function handleFirstConnectivityChange(isConnected) {
console.log('Then, is ' + (isConnected ? 'online' : 'offline'));
NetInfo.isConnected.removeEventListener(
'connectionChange',
handleFirstConnectivityChange
);
}
NetInfo.isConnected.addEventListener(
'connectionChange',
handleFirstConnectivityChange
);
0 意見