React-Komponenten aus GraphQL generieren — Numio
Erzeugt typisierten Data-Fetching-Code für jede Operation im Document-Panel: React-Apollo-Hooks (Standard), Apollo-Angular-Services, Stencil-Apollo-Komponenten oder urql-Hooks, zusammen mit den TypeScript-Typen für Schema und Operationen.
Fertige useXQuery- und useXLazyQuery-Hooks für eine React-App mit Apollo Client aus einer gerade geschriebenen Query erhalten.
Wann sie hilft
- Fertige useXQuery- und useXLazyQuery-Hooks für eine React-App mit Apollo Client aus einer gerade geschriebenen Query erhalten.
- Vergleichen, wie dieselbe Operation als injizierbarer Apollo-Angular-Service oder als urql-Hook aussieht, bevor du dich für einen Client entscheidest.
Anwendung
- Füge das Schema in den Editor GraphQL Schema und deine benannten Queries, Mutations oder Subscriptions in den Editor Document ein.
- Wähle das Ziel im Ausgabe-Dropdown: TypeScript React Apollo, TypeScript Apollo Angular, TypeScript Stencil Apollo oder TypeScript urql.
- Kopiere die erzeugte Document-Konstante (zum Beispiel GetUserDocument) und die Hooks, Services oder Komponenten in dein Projekt.
GraphQL-Schema + Document
# GraphQL Schema editor
type Query {
user(id: ID!): User
}
type User {
id: ID!
name: String
tags: [String!]!
}
# Document editor
query GetUser($id: ID!) {
user(id: $id) { id name }
}TypeScript-Komponenten und -Hooks
import { gql } from "@apollo/client"
import * as Apollo from "@apollo/client"
…
export const GetUserDocument = gql`
query GetUser($id: ID!) {
user(id: $id) {
id
name
}
}
`
…
export function useGetUserQuery(
baseOptions: Apollo.QueryHookOptions<GetUserQuery, GetUserQueryVariables>,
) {
const options = { ...defaultOptions, ...baseOptions }
return Apollo.useQuery<GetUserQuery, GetUserQueryVariables>(
GetUserDocument,
options,
)
}
…Details und Einschränkungen
Jede Option führt zuerst @graphql-codegen/typescript und typescript-operations aus, daher enthält die Ausgabe auch die vollständigen Schema- und Operationstypen (oben ausgelassen).
React Apollo importiert gql und die Hooks aus @apollo/client; urql und Stencil importieren gql aus graphql-tag; Apollo Angular erzeugt @Injectable-Klassen wie GetUserGQL.
Ohne gültige Operation im Editor Document werden keine Hooks oder Komponenten erzeugt; ein Document, das nicht zum Schema passt, wird mit einem Warnkommentar übersprungen. Die Erzeugung läuft in einem Web Worker im Browser.
FAQ
Warum ist baseOptions in useGetUserQuery erforderlich?
Die Query hat eine Non-Null-Variable ($id: ID!), daher verlangt der erzeugte Hook Optionen mit variables. Queries ohne erforderliche Variablen erhalten einen optionalen Parameter baseOptions.
Enthält die React-Apollo-Ausgabe Lazy-Query-Hooks?
Ja. Für jede Query werden useXQuery und useXLazyQuery sowie Typaliase für das Ergebnis wie GetUserQueryHookResult und GetUserQueryResult erzeugt. Mutations erhalten einen useXMutation-Hook.
Kann ich Plugin-Optionen wie withHooks oder die Importquelle ändern?
Nein. Die Seite führt jedes Plugin mit seiner Standardkonfiguration aus und bietet nur das Dropdown für das Ausgabeziel.