跳至主要内容
版本: v18.0.0

悬念

使用 实时解析器,您在图中公开的数据可能无法同步获得。例如,如果您从远程 API 获取数据,则可能需要一段时间才能获取数据。Relay 解析器提供了一种处理此加载状态的机制。

如果实时解析器返回“悬念哨兵”值,则该字段的所有使用者将暂停,直到该字段更新为非悬念值。

悬念哨兵

如果实时解析器处于加载状态,它可能会返回一个特殊的哨兵值,以指示数据尚未可用。

import {suspenseSentinel} from 'relay-runtime';

/**
* @RelayResolver Query.myIp: String
* @live
*/
export function myIp(): LiveState<string> {
return {
read: () => {
const state = store.getState();
const ipLoadObject = state.ip;
if (ipLoadObject.status === "LOADING") {
return suspenseSentinel();
}
return state.ip;
},
subscribe: (cb) => {
return store.subscribe(cb);
},
};
}
注意

如果查询或片段读取任何处于暂停状态的解析器字段,即使它通过另一个解析器的 @rootFragment 间接读取该解析器字段,它也会暂停。