メインコンテンツへスキップ
バージョン: v18.0.0

サスペンス

ライブレゾルバーを使用すると、グラフで公開しているデータが同期的に利用できない可能性があります。たとえば、リモートAPIからデータを取得する場合、データの取得に時間がかかる場合があります。Relay Resolverは、この読み込み状態を処理するためのメカニズムを提供します。

ライブレゾルバーが「サスペンスセンティネル」値を返す場合、そのフィールドのすべてのコンシューマーは、そのフィールドが非サスペンス値で更新されるまで中断されます。

サスペンスセンティネル

ライブレゾルバーが読み込み状態の場合、データがまだ利用できないことを示す特別なセンティネル値を返す場合があります。

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`を介して間接的にそのレゾルバーフィールドを読み取る場合でも、中断状態にあるレゾルバーフィールドを読み取ると中断されます。