Vai al contenuto

GraphQL Generatore di corrispondenza frammenti — Numio

Costruisce la mappa possibleTypes da uno schema GraphQL utilizzando @graphql-codegen/fragment-matcher. Ogni interfaccia e unione è elencata con i tipi di oggetto che la implementano o che appartengono ad essa, pronti per InMemoryCache di Apollo Client.

Configurazione di InMemoryCache({ possibleTypes }) in modo che i frammenti su interfacce o unioni corrispondano correttamente in Apollo Client 3.

GraphQL Schema

Fragment Matcher

Quando usarlo

  • Configurazione di InMemoryCache({ possibleTypes }) in modo che i frammenti su interfacce o unioni corrispondano correttamente in Apollo Client 3.
  • Rigenerazione della mappa possibleTypes dopo aver aggiunto un nuovo tipo a un'unione, senza eseguire il codegen CLI.

Come si usa

  1. Incolla uno schema che contiene le definizioni di interfaccia o unione nell'editor dello schema GraphQL.
  2. Leggere l'oggetto possibleTypes generato; i tipi che non fanno parte di un'interfaccia o di un'unione non vengono visualizzati.
  3. Salvalo come file .ts e passa possibleTypes dell'esportazione predefinita a InMemoryCache.

Schema GraphQL

interface Node {
  id: ID!
}
type User implements Node {
  id: ID!
  name: String!
}
type Post implements Node {
  id: ID!
  title: String!
}
union SearchResult = User | Post
type Query {
  search(term: String!): [SearchResult!]!
}

possibleTypes (TypeScript)

export interface PossibleTypesResultData {
  possibleTypes: {
    [key: string]: string[]
  }
}
const result: PossibleTypesResultData = {
  possibleTypes: {
    Node: ["User", "Post"],
    SearchResult: ["User", "Post"],
  },
}
export default result

Dettagli e limiti

Viene utilizzato solo lo schema; questa pagina non ha un editor di documenti.

L'output è TypeScript: un'interfaccia PossibleTypesResultData, una costante di risultato tipizzata e un'esportazione predefinita.

Uno schema senza interfacce o unioni produce un oggetto possibleTypes vuoto. La generazione viene eseguita in un Web Worker nel tuo browser.

FAQ

È questo il vecchio formato IntrospectionFragmentMatcher?

No. L'output utilizza la forma possibleTypes (nome del supertipo mappato su un array di nomi di sottotipo) utilizzata da Apollo Client 3, non il formato del risultato dell'introspezione di Apollo Client 2.

Come si utilizza l'output con Apollo Client?

Importa l'esportazione predefinita e passa result.possibleTypes al nuovo InMemoryCache({ possibleTypes }).

Specifiche e riferimenti