跳至主要內容
版本: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 間接讀取該解析器欄位,它也會暫停。