実行中のGraphQLベースのサーバがあり、GraphiQLを使用して適切にテストすることができました。しかし、私はRelayの実装を理解することができません。RelayはどこからGraphQLのスキーマをフェッチしますか?
GraphQLはサーバ側であるため、スキーマがクライアント側のネットワーク層を介してリレーする方法はどのようになっていますか?または、同じGraphQLをどのように指していますか?
実行中のGraphQLベースのサーバがあり、GraphiQLを使用して適切にテストすることができました。しかし、私はRelayの実装を理解することができません。RelayはどこからGraphQLのスキーマをフェッチしますか?
GraphQLはサーバ側であるため、スキーマがクライアント側のネットワーク層を介してリレーする方法はどのようになっていますか?または、同じGraphQLをどのように指していますか?
少し余計な作業が必要です。基本的には、シリアライズされたバージョンのスキーマをサーバー側のファイルにダンプしてから、そのファイルをクライアントに移動し、バベルのコンパイル中にインクルードする必要があります。 Facebookにはbabel pluginがあり、Relayがスキーマについて知るために、このファイルをバンドルに組み込みます。
編集:ここであなたは、あなたがnpm install babel-relay-plugin
に持っていると含まれていることを取得した後JSON
import { graphql } from 'graphql'
import { introspectionQuery, printSchema } from 'graphql/utilities'
/*
generates json of our schema for use by relay
*/
export default function (schema) {
return new Promise((resolve, reject) => {
graphql(schema, introspectionQuery).then(result => {
if (result.errors) {
console.error(`ERROR introspecting schema: ${result.errors}`)
reject(new Error(result.errors))
} else {
resolve({ json: result, graphql: printSchema(schema) })
}
})
})
}
にスキーマファイルをダンプする方法については、スニペットがある、あなたのバベルのプラグインで(おそらくのWebPACKの設定では、もしそのあなたはそれを使用しています)。