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.json
fichier 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 :
<ApolloProvider client={client}>
tag (c'est déjà là dans les 3 projets - mais pas dans la bibliothèque "composants")@apollo/client
package 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/client
comme une dépendance de pairs à la racine package.json
de ma bibliothèque partagée (j'utilise lerna).
Cela n'a pas fonctionné pour moi de simplement lier le paquet avec yarn link
mais j'ai dû le publier sur npm.
Commentaires
Enregistrer un commentaire