OnlineManager 负责管理 TanStack Query 内部的在线状态。它可以用于更改默认的事件监听器或手动更改在线状态。
默认情况下,onlineManager 假定网络连接是激活的,并监听 window 对象上的 online 和 offline 事件来检测更改。
在以前的版本中,navigator.onLine 用于确定网络状态。然而,它在基于 Chromium 的浏览器中效果不佳。有很多围绕误报的 问题,导致查询被错误地标记为 offline。
为了规避这个问题,我们现在始终从 online: true 开始,并且只监听 online 和 offline 事件来更新状态。
这应该会降低假阴性的可能性,但是,对于通过 serviceWorkers 加载的离线应用,这可能意味着假阳性,这些应用即使没有互联网连接也能工作。
Its available methods are (它可用的方法有)
setEventListener 可用于设置自定义事件监听器
import NetInfo from '@react-native-community/netinfo'
import { onlineManager } from '@tanstack/react-query'
onlineManager.setEventListener((setOnline) => {
return NetInfo.addEventListener((state) => {
setOnline(!!state.isConnected)
})
})
import NetInfo from '@react-native-community/netinfo'
import { onlineManager } from '@tanstack/react-query'
onlineManager.setEventListener((setOnline) => {
return NetInfo.addEventListener((state) => {
setOnline(!!state.isConnected)
})
})
subscribe 可用于订阅在线状态的变化。它返回一个取消订阅函数
import { onlineManager } from '@tanstack/react-query'
const unsubscribe = onlineManager.subscribe((isOnline) => {
console.log('isOnline', isOnline)
})
import { onlineManager } from '@tanstack/react-query'
const unsubscribe = onlineManager.subscribe((isOnline) => {
console.log('isOnline', isOnline)
})
setOnline 可用于手动设置在线状态。
import { onlineManager } from '@tanstack/react-query'
// Set to online
onlineManager.setOnline(true)
// Set to offline
onlineManager.setOnline(false)
import { onlineManager } from '@tanstack/react-query'
// Set to online
onlineManager.setOnline(true)
// Set to offline
onlineManager.setOnline(false)
选项
isOnline 可用于获取当前的在线状态。
const isOnline = onlineManager.isOnline()
const isOnline = onlineManager.isOnline()