啟用 Relay Resolvers
Relay Resolvers 仍然是 Relay 的實驗性功能。因此,它們需要額外的設定才能啟用。您可能還會發現文件中提及的 API 尚未反映在我們社群維護的 TypeScript 類型中。
執行階段
必須在您的執行階段程式碼中啟用 Relay Resolvers,方法是使用我們實驗性的 LiveResolverStore
作為您的 Relay 儲存區,並啟用 ENABLE_RELAY_RESOLVERS
執行階段功能旗標
import { Environment, RecordSource, RelayFeatureFlags } from "relay-runtime";
// highlight-next-line
import LiveResolverStore from "relay-runtime/lib/store/live-resolvers/LiveResolverStore";
RelayFeatureFlags.ENABLE_RELAY_RESOLVERS = true;
// It is recommended to log errors thrown by Resolvers
function fieldLogger(event) {
if(event.kind === "relay_resolver.error") {
// Log this somewhere!
console.warn(`Resolver error encountered in ${event.owner}.${event.fieldPath}`)
console.warn(event.error)
}
}
const environment = new Environment({
network: Network.create(/* your fetch function here */),
store: new LiveResolverStore(new RecordSource()),
requiredFieldLogger: fieldLogger
});
// ... create your Relay context with your environment
編譯器
您必須在 Relay 編譯器設定中啟用 "enable_relay_resolver_transform"
功能旗標
relay.config.json
{
"src": "./src",
"schema": "./schema.graphql",
"language": "typescript",
"featureFlags": {
// highlight-next-line
"enable_relay_resolver_transform": true
}
}