网络模式
Quaere 提供了三种不同的网络模式,用于区分如果没有网络连接时应该如何处理请求和变更的行为。这个模式可以针对每个请求/变更单独设置,或者通过请求/变更默认值全局设置。
由于 Quaere 最常用于与数据获取库一起进行数据获取,所以默认的网络模式是在线。
网络模式:online
在这种模式下,只有在有网络连接的情况下,请求才会被触发。这是默认模式。如果发起一个请求,如果由于没有网络连接而无法进行请求,它将始终保持在其当前状态(等待中,错误,成功)。
如果请求因为您在线而运行,但在请求仍在进行时您离线,Quaere 也会暂停重试请求。暂停的请求将在您重新获得网络连接后继续运行。注意这与refetchOnReconnect
选项无关(在此模式中也默认为true
),因为它不是 重新请求
,而是 继续请求
。如果在此期间已取消请求,则不会继续运行。
网络模式:always
在这种模式下,Quaere 将始终进行获取并忽略在线/离线状态。如果您在无需网络连接的环境中使用 Quaere,例如仅从AsyncStorage
读取数据,或者仅想从fetcher
返回Promise.resolve(5)
,则可能希望选择此模式。
- 请求永远不会“暂停”,因为您没有网络连接。
- 如果失败,重试也不会暂停 - 请求将进入“错误”状态。
- 在此模式中,默认情况下
refetchOnReconnect
为false
,因为当重新连接到网络不再是过期请求应该被重新获取的好指标。当然如果您愿意,仍然可以打开它。
网络模式:offlineFirst
这种模式是前两种选项之间的中间地带,其中 Quaere 将首次运行一次fetcher
,然后暂停重试。如果您有一个 serviceWorker 拦截了像离线优先 PWA (opens in a new tab)中缓存的请求,或者如果您使用Cache-Control 头 (opens in a new tab)进行 HTTP 缓存,这将非常有用。
在这些情况下,首次获取可能成功,因为它来自离线存储/缓存。但是,如果缓存未命中,则网络请求将失败,此时此模式将像“在线”请求一样行为 - 暂停重试。
签名
networkMode: 'online' | 'always' | 'offlineFirst'
- 可选
- 默认为
'online'