Jak używać Relay z NextJS i TypeScript

TLDR: użyj dynamicznego importu lub użyj React 18 alfa https://github.com/reactwg/react-18/discussions/9

Problem

Jeśli masz taki kod przekaźnika:

import { Suspense } from "react";
import { graphql } from "relay-runtime";
import { useLazyLoadQuery } from "react-relay";
const RelayTestQuery = graphql`
  query RelayTestQuery {
    viewer {
      id
    }
  }
`;
function RelayTestInner() {
  const data = useLazyLoadQuery(RelayTestQuery, {
    variables: {},
  });
  return <div>hi</div>;
}
export default function RelayTest() {
  return (
    <Suspense fallback={<div>Loading</div>}>
      <RelayTestInner />
    </Suspense>
  );
}

export default function Home() {
  return (
    <RelayEnvironmentProvider environment={RelayEnvironment}>
      <RelayTest />
    </RelayEnvironmentProvider>
  );
}

ReactDOMServer nie obsługuje jeszcze Suspense.

Rozwiązanie

Import dynamiczny

Aby to naprawić, możesz RelayTestDynamiczamiast tego użyć:

import dynamic from "next/dynamic";
const RelayTestDynamic = dynamic(() => import("./RelayTest"), {
  ssr: false,
});
export default RelayTestDynamic;

Wersje alfa

Alternatywnie możesz użyć wersji alfa reacti react-dom.

yarn add react@alpha react-dom@alpha

Informacje o TSConfig

https://github.com/relay-tools/relay-compiler-language-typescript#typescriptwymienia następujące elementy:

Pamiętaj również, aby skonfigurować kompilator TypeScript do transpilacji do es2015modułów i pozostawić transpilację do commonjsmodułów aż do Babel z następującymi tsconfig.jsonustawieniami:

Uznałem to za niepotrzebne. Nie wiesz dlaczego, może to nie ma zastosowania w przypadku korzystania z hooków Relay?

Wskaźniki kodowe

Sprawdź te repozytoria dla przykładów.

  • https://github.com/arcticmatt/relay-nextjs-typescript
  • https://github.com/arcticmatt/relay-nextjs

Suggested posts

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Wstęp Udar to nagły przypadek medyczny, który może dotknąć każdego w dowolnym momencie. Występuje, gdy przepływ krwi do części mózgu zostaje zakłócony, co prowadzi do nagłej utraty funkcji mózgu.

Jest — potężny framework do testowania JavaScript

Jest — potężny framework do testowania JavaScript

Testowanie jest istotną częścią tworzenia oprogramowania. Zapewnia, że ​​kod jest niezawodny, działa zgodnie z oczekiwaniami i zmniejsza prawdopodobieństwo błędów.

Related posts

Zabójstwo Jordana Neely'ego i problem „patriotycznego” rasizmu

Czy Stany Zjednoczone mogą zrobić zasadniczy krok, by nie utożsamiać zachowania rasistowskiego z byciem dobrym Amerykaninem?

Zabójstwo Jordana Neely'ego i problem „patriotycznego” rasizmu

[Ostrzeżenie: ten esej zawiera zrzuty ekranowe ludzi wychwalających mordercę Jordana Neely'ego.] Funkcjonariusze organów ścigania w końcu - i być może niechętnie - oskarżyli Daniela Penny'ego, człowieka, który dusił Jordana Neely'ego aż do śmierci, o to zabójstwo.

Finansowanie usuwania dwutlenku węgla w RO24

Podział wniosków o środki Carbon180 na różne ścieżki

Finansowanie usuwania dwutlenku węgla w RO24

Autor: Alyson Lee, doradca zarządzający ds. spraw rządowych Coroczny proces przyznawania środków przez rząd federalny ma kluczowe znaczenie dla naszych wysiłków na rzecz sfinansowania usuwania dwutlenku węgla (CDR). Każdego roku Carbon180 przesyła prośby do różnych biur kongresowych, aby pomóc wskazać, gdzie będą płynąć dolary w przyszłym roku.

Wyzwanie czytelnicze Goodreads jest toksyczne

Wyzwanie czytelnicze Goodreads jest toksyczne

Swędzenie w mojej dłoni rozszerzyło się, gdy targowałem się z miejscowym księgarzem o kolejną książkę. Ta książka, podobnie jak pozostałe, które ostatnio kupiłem, znalazłaby swój tron ​​na moim stosie „Do przeczytania” (TBR); a mimo to kupiłem.

Archiwum tego zagrożenia: tom 7 Black Basta

Archiwum tego zagrożenia: tom 7 Black Basta

W dzisiejszym połączonym świecie zagrożenie cyberatakami jest bardziej powszechne niż kiedykolwiek. Cyberprzestępcy i podmioty państwowe nieustannie starają się wykorzystywać luki w zabezpieczeniach i kraść cenne dane, stanowiąc poważne zagrożenie dla organizacji każdej wielkości.