Eine alternative Lösung basierend auf swr und gql-request finden Sie hier
Generieren Sie den Apollo -Code für NextJs SSR
NextJS hat kürzlich getServerSideProps eingeführt, mit denen das vom offizielle Apollo GraphQL -Plugin angewendete Hoc -Muster (basierend auf getInitialProps ) nicht verwendet wird. Gleichzeitig erzwingt die SSR -Methode, die der Apollo -Client ( getDataFromTree ) bietet, die React -App mehrmals, um alle relevanten Abfragen zu sammeln und abzurufen. Durch die Deklonation einer Top -Level -Abfrage können wir die Rendering -Zeit speichern und ein einfacheres Muster liefern, das mit getServerSideProps funktioniert. Dieses Plugin generiert eine TypeSafe -Version von getServerSideProps für jede Serverabfrage und die entsprechende HOC, um die React -Komponente zu wickeln, die das Cache -Ergebnis zurückgibt. Die Einschränkung/den Vorteil dieser Lösung besteht darin, dass alle in inneren React -Komponenten eingebetteten Abfragen ignoriert werden, sofern nicht durch den obersten Cache abgedeckt.
excludePatterns (Standard: NULL): REGEXP, um die Bedienungsnamen auszuschließenexcludePatternsOptions (Standard: ''): REGEXP -Flags, um die Operationsnamen auszuschließenreactApolloVersion (Standardeinstellung: 2): Apollo Client -VersionapolloCacheImportFrom (Standard: Apollo-Cache-inmemory): Apollo-Cache-inmemory-AbhängigkeitapolloImportFrom (Standard: Apollo-Client V2 oder @apollo/client v3): Apollo Client-AbhängigkeitapolloCacheImportFrom (Standard: Apollo-Cache-inmemory v2 oder @apollo/client v3): Apollo-Cache-Client-AbhängigkeitapolloStateKey (Standard: Apolostate): Schlüssel zum Speichern von Apollo -Status verwendetwithHooks (Standard: Falsch): Anpassen die Ausgabe durch Aktivieren/Deaktivieren der generierten React -Hooks.withHOC (Standard: TRUE): Anpassung der Ausgabe durch Aktivieren/Deaktivieren des hoc.customImports (Standard: ''): Vollständige benutzerdefinierte ImportdeklarationcontextType (Standard: 'Any'): CONTX -Typ, um GetAPolloclient zu erhaltencontextTypeRequired (Standard: Falsch): Wenn der Kontext erforderlich sein sollte, wenn er von GetServersideProps aufgerufen wirdpre (Standard: ''): benutzerdefinierter Code vor jeder Funktionpost (Standard: ''): benutzerdefinierter Code nach jeder FunktionapolloClientInstanceImport (Standard: ''): Hinzufügen von Apolloclient -Instanzimporten hinzufügenreplaceQuery (Standard: Falsch): Ersetzen Sie das Schlüsselwort "Abfrage" in den generierten OperationenreplacePage (Standard: Falsch): Ersetzen Sie das Schlüsselwort "Seite" in den generierten OperationenreactImport (Standard: Importtyp reagieren aus 'React';): Custom React Import overwrite: true
schema:
- 'https://myschema/graphql'
documents:
- 'src/**/*.graphql'
generates:
src/@types/codegen/graphql.tsx:
plugins:
- 'typescript'
- 'typescript-operations'
- 'typescript-react-apollo'
src/@types/codegen/page.tsx:
config:
documentMode: external
importDocumentNodeExternallyFrom: ./graphql
preset: import-types
presetConfig:
typesPath: ./graphql
plugins:
- ./build/src/index.js
hooks:
afterAllFileWrite:
- prettier --write