文档
网络模式

网络模式

Quaere 提供了三种不同的网络模式,用于区分如果没有网络连接时应该如何处理请求变更的行为。这个模式可以针对每个请求/变更单独设置,或者通过请求/变更默认值全局设置。

由于 Quaere 最常用于与数据获取库一起进行数据获取,所以默认的网络模式是在线

网络模式:online

在这种模式下,只有在有网络连接的情况下,请求才会被触发。这是默认模式。如果发起一个请求,如果由于没有网络连接而无法进行请求,它将始终保持在其当前状态(等待中,错误,成功)。

如果请求因为您在线而运行,但在请求仍在进行时您离线,Quaere 也会暂停重试请求。暂停的请求将在您重新获得网络连接后继续运行。注意这与refetchOnReconnect选项无关(在此模式中也默认为true),因为它不是 重新请求,而是 继续请求。如果在此期间已取消请求,则不会继续运行。

网络模式:always

在这种模式下,Quaere 将始终进行获取并忽略在线/离线状态。如果您在无需网络连接的环境中使用 Quaere,例如仅从AsyncStorage读取数据,或者仅想从fetcher返回Promise.resolve(5),则可能希望选择此模式。

  • 请求永远不会“暂停”,因为您没有网络连接。
  • 如果失败,重试也不会暂停 - 请求将进入“错误”状态。
  • 在此模式中,默认情况下refetchOnReconnectfalse,因为当重新连接到网络不再是过期请求应该被重新获取的好指标。当然如果您愿意,仍然可以打开它。

网络模式:offlineFirst

这种模式是前两种选项之间的中间地带,其中 Quaere 将首次运行一次fetcher,然后暂停重试。如果您有一个 serviceWorker 拦截了像离线优先 PWA (opens in a new tab)中缓存的请求,或者如果您使用Cache-Control 头 (opens in a new tab)进行 HTTP 缓存,这将非常有用。

在这些情况下,首次获取可能成功,因为它来自离线存储/缓存。但是,如果缓存未命中,则网络请求将失败,此时此模式将像“在线”请求一样行为 - 暂停重试。

签名

  • networkMode: 'online' | 'always' | 'offlineFirst'
    • 可选
    • 默认为'online'