准备状态

每当 Relay 满足数据需求时,知道某些事件何时发生就可能很有用。例如,我们可能需要记录数据可用的时间,或者我们可能希望将错误记录到服务器。这些事件通过onReadyStateChange 回调在大多数 Relay API 上可用。

onReadyStateChange #

当Relay 满足数据时, onReadyStateChange使用描述当前“准备状态”的对象调用一次或多次回调。此对象具有以下属性::

  • ready: boolean

    当渲染所需的数据子集准备就绪时,这个属性为 true。

  • done: boolean

    所有 数据要求准备好进行渲染时,这个属性为 true。

  • error: ?Error

    如果失败, 这个属性为 Error 的一个实例,否则为 null

  • events: Array<ReadyStateEvent>

    这是已经收到的事件数组(见 ReadyStateEvent 下文)。

  • stale: boolean

    当 "强制获取"时, 如果 ready 在服务器请求完成之前数据在客户端上可用,则为 true 。

  • aborted: boolean

    请求是否中止。

ReadyStateEvent #

  • ABORT
  • CACHE_RESTORED_REQUIRED
  • CACHE_RESTORE_FAILED
  • CACHE_RESTORE_START
  • NETWORK_QUERY_ERROR
  • NETWORK_QUERY_RECEIVED_ALL
  • NETWORK_QUERY_RECEIVED_REQUIRED
  • NETWORK_QUERY_START
  • STORE_FOUND_ALL
  • STORE_FOUND_REQUIRED

示例 #

Fetching Data from the Server #

如果客户端的数据不足使得 Relay 发送服务器请求以获得更多数据,我们期望以下行为:

  1. ready 设置为 false.
  2. readydone 设置为 true.

从客户端解析数据#

如果客户端上有足够的数据可用, 则 Relay 不需要发送服务器请求,我们期望以下行为:

  1. readydone 设置为 true.

服务器错误 #

如果服务器请求导致无法加载数据,我们期望以下行为:

  1. ready 设置为 false.
  2. error 设置为一个 Error 对象。

注意, readydone 会继续为 false.

强制从客户端获取数据 #

如果产生 "强制获取" 并且客户端数据不足, 这可预期 与从服务器获取数据相同的行为。 但是, 如果 "强制获取" 产生并且在客户端 客户端上足够的数据来呈现有上足够的数据来呈现,我们期望以下行为: behavior:

  1. ready, done, 和 stale 设置为 true.
  2. readydone 设置为 true, 但 stale 设置为 false.