Cách sử dụng Relay với NextJS và TypeScript

TLDR: sử dụng nhập động hoặc sử dụng React 18 alpha https://github.com/reactwg/react-18/discussions/9

Vấn đề

Nếu bạn có một số mã Relay như thế này:

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 chưa hỗ trợ Suspense.

Giải pháp

Nhập động

Để khắc phục điều này, bạn có thể sử dụng RelayTestDynamicthay thế:

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

Phiên bản Alpha

Ngoài ra, bạn có thể sử dụng các phiên bản alpha của reactvà react-dom.

yarn add react@alpha react-dom@alpha

Về TSConfig

https://github.com/relay-tools/relay-compiler-language-typescript#typescript đề cập đến những điều sau:

Ngoài ra, hãy chắc chắn định cấu hình trình biên dịch TypeScript để chuyển tải sang es2015các mô-đun và để chuyển dịch sang commonjscác mô-đun lên đến Babel với các tsconfig.jsoncài đặt sau :

Tôi thấy điều đó là không cần thiết. Không chắc tại sao, có thể nó không áp dụng khi sử dụng móc Relay?

Codepointers

Kiểm tra các đại diện này để biết ví dụ.

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

Suggested posts

Tránh những hậu quả tàn khốc của đột quỵ: Học hỏi từ hành trình của một gia đình.

Tránh những hậu quả tàn khốc của đột quỵ: Học hỏi từ hành trình của một gia đình.

Giới thiệu Đột quỵ là một trường hợp cấp cứu y tế có thể tấn công bất kỳ ai vào bất kỳ lúc nào. Nó xảy ra khi lưu lượng máu đến một phần của não bị gián đoạn, dẫn đến mất chức năng não đột ngột.

Jest — Khung kiểm tra JavaScript mạnh mẽ

Jest — Khung kiểm tra JavaScript mạnh mẽ

Kiểm thử là một phần thiết yếu của quá trình phát triển phần mềm. Nó đảm bảo rằng mã đáng tin cậy, hoạt động như mong đợi và giảm khả năng xảy ra lỗi.

Related posts

"Hé lộ rãnh Mariana: Hé lộ những sự thật kinh hoàng ẩn giấu của vực thẳm"

"Hé lộ rãnh Mariana: Hé lộ những sự thật kinh hoàng ẩn giấu của vực thẳm"

Giới thiệu: Chào mừng những độc giả dũng cảm đến với cuộc hành trình sẽ đưa chúng ta đến những nơi sâu thẳm nhất của hành tinh chúng ta. Trong blog này, chúng tôi đi sâu vào thế giới bí ẩn của Rãnh Mariana, khám phá những bí mật ẩn giấu của nó và khám phá những sự thật lạnh thấu xương nằm bên dưới bề mặt của nó.

Cách cứu hành tinh và kiếm tiền

Cách cứu hành tinh và kiếm tiền

Đã bao nhiêu lần bạn vứt bỏ chai nhựa, lọ thủy tinh, lon nhôm hay gói năng lượng xanh mà không cần suy nghĩ kỹ? Đã bao nhiêu lần bạn ước mình có thể nhận được thứ gì đó để đổi lại việc tái chế chúng? Nếu bạn giống như hầu hết mọi người, câu trả lời có lẽ là nhiều lần. Tái chế thường được coi là một rắc rối, một công việc vặt hoặc một nhiệm vụ không mang lại bất kỳ lợi ích tức thời hoặc hữu hình nào.

Vụ sát hại Jordan Neely và vấn đề phân biệt chủng tộc “yêu nước”

Hoa Kỳ có thể thực hiện một bước thiết yếu là không đánh đồng hành vi phân biệt chủng tộc với việc trở thành một người Mỹ tốt không?

Vụ sát hại Jordan Neely và vấn đề phân biệt chủng tộc “yêu nước”

[Cảnh báo kích hoạt: Bài tiểu luận này bao gồm các bức ảnh chụp màn hình những người ca ngợi kẻ giết Jordan Neely.] Các quan chức thực thi pháp luật cuối cùng - và có lẽ miễn cưỡng - đã buộc tội Daniel Penny, kẻ đã bóp cổ Jordan Neely cho đến chết, vì tội giết người đó.

Cuốn sách đầu tiên của một đứa trẻ về việc cao

Cuốn sách đầu tiên của một đứa trẻ về việc cao

(Cảnh báo- Đây là tác phẩm Châm biếm, nhằm mục đích Lật đổ một cách vui vẻ- Chắc chắn không dành cho trẻ em) Bạn đã từng thấy bố mẹ mình trốn trong bếp và hút những điếu thuốc bốc mùi đó. Họ nói với bạn.