悬念
使用 实时解析器,您在图中公开的数据可能无法同步获得。例如,如果您从远程 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
间接读取该解析器字段,它也会暂停。