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

启用 Relay 解析器

Relay 解析器仍然是 Relay 中的实验性功能。因此,它们需要额外的配置才能启用。您可能还会发现文档中的 API 尚未反映在我们社区维护的 TypeScript 类型中。

运行时

Relay 解析器必须通过使用我们的实验性 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
}
}