Cómo usar Relay con NextJS y TypeScript

TLDR: use importaciones dinámicas o use React 18 alpha https://github.com/reactwg/react-18/discussions/9

El problema

Si tiene algún código de retransmisión como este:

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 aún no es compatible con Suspense.

La solución

Importaciones dinámicas

Para arreglar esto, puedes usar en su RelayTestDynamiclugar:

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

Versiones Alfa

Como alternativa, puede utilizar las versiones alfa de reacty react-dom.

yarn add react@alpha react-dom@alpha

Acerca de TSConfig

https://github.com/relay-tools/relay-compiler-language-typescript#typescriptmenciona lo siguiente:

También asegúrese de configurar el compilador de TypeScript para transpilar a es2015módulos y dejar la transpilación a commonjsmódulos hasta Babel con la siguiente tsconfig.jsonconfiguración:

Encontré que eso era innecesario. No estoy seguro de por qué, ¿tal vez no se aplica al usar ganchos de retransmisión?

Puntos de código

Echa un vistazo a estos repositorios para ver ejemplos.

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

Suggested posts

Evitar las consecuencias devastadoras de un derrame cerebral: aprender del viaje de una familia.

Evitar las consecuencias devastadoras de un derrame cerebral: aprender del viaje de una familia.

Introducción Un accidente cerebrovascular es una emergencia médica que puede afectar a cualquier persona en cualquier momento. Ocurre cuando se interrumpe el flujo de sangre a una parte del cerebro, lo que lleva a una pérdida repentina de la función cerebral.

Jest: un poderoso marco de prueba de JavaScript

Jest: un poderoso marco de prueba de JavaScript

Las pruebas son una parte esencial del desarrollo de software. Garantiza que el código sea confiable, funcione como se espera y reduce la probabilidad de errores.

Related posts

Twitter de televisión en red

Twitter de televisión en red

Lo que es viejo ahora es nuevo otra vez y lo que solía ser algo reluciente ahora se siente aburrido. No me refiero a que los jeans JNCO regresen entre los chicos geniales del centro de la ciudad junto con otras modas de fines de la década de 1990.

Dos años en diseño: lo bueno, lo malo y lo feo...

Dos años en diseño: lo bueno, lo malo y lo feo...

“Oye, Siri, toca Me Dive de Olivia Dean”. Fue en mayo de 2021 cuando comencé mi pasantía en Future Academy Africa en Akure, Nigeria.

Ese Archivo de Amenazas: Vol 7 Black Basta

Ese Archivo de Amenazas: Vol 7 Black Basta

En el mundo interconectado de hoy, la amenaza de los ataques cibernéticos es más frecuente que nunca. Los ciberdelincuentes y los actores del estado-nación buscan constantemente explotar las vulnerabilidades y robar datos valiosos, lo que representa un riesgo significativo para las organizaciones de todos los tamaños.

Recopilación de OSINT para la caza de amenazas

Recopilación de OSINT para la caza de amenazas

¡Hola, entusiastas cibernéticos! Bienvenido de nuevo a la serie OSINT para la caza de amenazas. En el primer artículo, le di una descripción general de OSINT y su importancia en la caza de amenazas.