Générer des composants React à partir de GraphQL — Numio
Génère du code typé de récupération de données pour chaque opération du panneau Document : hooks React Apollo (par défaut), services Apollo Angular, composants Stencil Apollo ou hooks urql, accompagnés des types TypeScript du schéma et des opérations.
Obtenir des hooks useXQuery et useXLazyQuery prêts à l'emploi pour une application React avec Apollo Client à partir d'une query que vous venez d'écrire.
Quand l’utiliser
- Obtenir des hooks useXQuery et useXLazyQuery prêts à l'emploi pour une application React avec Apollo Client à partir d'une query que vous venez d'écrire.
- Comparer à quoi ressemble la même opération sous forme de service injectable Apollo Angular ou de hook urql avant de choisir un client.
Mode d’emploi
- Collez le schéma dans l'éditeur GraphQL Schema et vos queries, mutations ou subscriptions nommées dans l'éditeur Document.
- Choisissez la cible dans la liste de sortie : TypeScript React Apollo, TypeScript Apollo Angular, TypeScript Stencil Apollo ou TypeScript urql.
- Copiez dans votre projet la constante de document générée (par exemple GetUserDocument) ainsi que les hooks, services ou composants.
Schéma GraphQL + 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 }
}Composants et hooks TypeScript
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,
)
}
…Détails et limites
Chaque option exécute d'abord @graphql-codegen/typescript et typescript-operations ; la sortie contient donc aussi les types complets du schéma et des opérations (omis ci-dessus).
React Apollo importe gql et les hooks depuis @apollo/client ; urql et Stencil importent gql depuis graphql-tag ; Apollo Angular génère des classes @Injectable comme GetUserGQL.
Sans opération valide dans l'éditeur Document, aucun hook ni composant n'est généré ; un document qui ne correspond pas au schéma est ignoré avec un commentaire d'avertissement. La génération s'exécute dans un Web Worker du navigateur.
FAQ
Pourquoi baseOptions est-il obligatoire dans useGetUserQuery ?
La query a une variable non nulle ($id: ID!), donc le hook généré exige des options contenant variables. Les queries sans variable obligatoire reçoivent un paramètre baseOptions facultatif.
La sortie React Apollo inclut-elle des hooks de lazy query ?
Oui. Pour chaque query, elle génère useXQuery et useXLazyQuery ainsi que des alias de types de résultat comme GetUserQueryHookResult et GetUserQueryResult. Les mutations reçoivent un hook useXMutation.
Puis-je modifier des options du plugin comme withHooks ou la source des imports ?
Non. La page exécute chaque plugin avec sa configuration par défaut et ne propose que la liste de la cible de sortie.