Comment utiliser les crochets Apollo/Graphql dans la bibliothèque de composants React.js externe

J'ai 3 projets React.js et j'essaie de consolider les composants réutilisés dans les 3 projets dans une bibliothèque de composants partagée.

Cette bibliothèque de composants est hébergée sur Github et importée dans les 3 projets via le package.jsonfichier comme ceci :

"components": "github:myusername/components"`

Je suis alors en mesure d'importer les composants de la bibliothèque dans chaque projet comme tel :

import { Form } from "components"

mais lorsque le composant importé (dans ce cas a Form) utilise un crochet Apollo/Graphql ( useQuery, ou useMutation) j'obtiens cette erreur:

Uncaught Invariant Violation: Could not find "client" in the context or passed in as an option. Wrap the root component in an <ApolloProvider>, or pass an ApolloClient instance in via options.

J'ai trouvé d'innombrables questions sur cette même erreur, mais les solutions sont déjà en place ou non pertinentes. Voici ce que j'ai trouvé jusqu'à présent :

  • Enveloppez l'application avec le <ApolloProvider client={client}>tag (c'est déjà là dans les 3 projets - mais pas dans la bibliothèque "composants")

  • utiliser le @apollo/clientpackage au lieu du lien@apollo/react-hooks - (utilisant déjà ce package)


  • Solution du problème

    La solution qui a fonctionné pour moi était de définir @apollo/clientcomme une dépendance de pairs à la racine package.jsonde ma bibliothèque partagée (j'utilise lerna).

    Cela n'a pas fonctionné pour moi de simplement lier le paquet avec yarn linkmais j'ai dû le publier sur npm.

    Commentaires

    Posts les plus consultés de ce blog

    Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

    Détecter les appuis sur les touches fléchées en JavaScript

    Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"