ทางเลือกอื่นที่ใช้ swr และ gql-request สามารถดูได้ที่นี่
สร้างรหัส Apollo สำหรับ NextJS SSR
NextJS เพิ่งเปิด getServerSideProps ซึ่งไม่อนุญาตให้ใช้รูปแบบเฉพาะกิจที่ใช้โดยปลั๊กอิน Apollo GraphQL อย่างเป็นทางการ (ขึ้นอยู่กับ getInitialProps ) ในขณะเดียวกันวิธีการ SSR ที่นำเสนอโดย Apollo Client ( getDataFromTree ) บังคับใช้แอพ React เพื่อแสดงผลหลายครั้งเพื่อรวบรวมและดึงข้อความค้นหาที่เกี่ยวข้องทั้งหมด โดยการประกาศแบบสอบถามระดับบนเราสามารถประหยัดเวลาการแสดงผลและให้รูปแบบที่ง่ายกว่าซึ่งทำงานร่วมกับ getServerSideProps ปลั๊กอินนี้สร้าง getServerSideProps เวอร์ชัน Typesafe สำหรับการสืบค้นเซิร์ฟเวอร์แต่ละตัวและ HOC ที่สอดคล้องกันเพื่อห่อส่วนประกอบปฏิกิริยาที่ส่งคืนผลลัพธ์แคช ข้อ จำกัด/ข้อได้เปรียบของโซลูชันนี้คือการสืบค้นทั้งหมดที่ฝังอยู่ในส่วนประกอบของปฏิกิริยาภายในจะถูกละเว้นเว้นแต่จะครอบคลุมโดยแคชระดับบนสุด
excludePatterns (ค่าเริ่มต้น: null): regexp เพื่อยกเว้นชื่อการทำงานexcludePatternsOptions (ค่าเริ่มต้น: ''): regexp ตั้งค่าสถานะเพื่อยกเว้นชื่อการทำงานreactApolloVersion (ค่าเริ่มต้น: 2): Apollo Client VersionapolloCacheImportFrom (ค่าเริ่มต้น: Apollo-cache-inmemory): การพึ่งพา Apollo-cache-inmoryapolloImportFrom (ค่าเริ่มต้น: Apollo-Client V2 หรือ @Apollo/ไคลเอนต์ v3): การพึ่งพาไคลเอนต์ ApolloapolloCacheImportFrom (ค่าเริ่มต้น: Apollo-cache-inmemory v2 หรือ @apollo/client v3): Apollo Cache Client DependencyapolloStateKey (ค่าเริ่มต้น: ApollOstate): คีย์ที่ใช้สำหรับการจัดเก็บสถานะ ApollowithHooks (ค่าเริ่มต้น: FALSE): ปรับแต่งเอาต์พุตโดยการเปิดใช้งาน/ปิดการใช้งานตะขอปฏิกิริยาที่สร้างขึ้นwithHOC (ค่าเริ่มต้น: จริง): ปรับแต่งเอาต์พุตโดยการเปิดใช้งาน/ปิดการใช้งาน HOCcustomImports (ค่าเริ่มต้น: ''): คำประกาศการนำเข้าแบบกำหนดเองเต็มรูปแบบcontextType (ค่าเริ่มต้น: 'any'): ประเภท contex ส่งผ่านไปยัง getapolloclientcontextTypeRequired (ค่าเริ่มต้น: false): หากบริบทควรได้รับเมื่อเรียกจาก GetServersidePropspre (ค่าเริ่มต้น: ''): รหัสที่กำหนดเองก่อนแต่ละฟังก์ชันpost (ค่าเริ่มต้น: ''): รหัสที่กำหนดเองหลังจากแต่ละฟังก์ชันapolloClientInstanceImport (ค่าเริ่มต้น: ''): เพิ่มการนำเข้าอินสแตนซ์ ApolloclientreplaceQuery (ค่าเริ่มต้น: เท็จ): แทนที่คำหลัก "Query" ภายในการดำเนินการที่สร้างขึ้นreplacePage (ค่าเริ่มต้น: false): แทนที่คำหลัก "หน้า" ภายในการดำเนินการที่สร้างขึ้นreactImport (ค่าเริ่มต้น: ประเภทการนำเข้าปฏิกิริยาจาก 'react';): การนำเข้าปฏิกิริยาแบบกำหนดเอง 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