# @apollo/client-integration-react-router 中文文档

规范地址：https://npmcn.com/package/%40apollo/client-integration-react-router/

版本：0\.14\.5-alpha\.0
npm 元数据更新时间：2026-04-09T15:19:43.491Z
中文译文更新时间：2026-11-06T11:03:12.019Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40apollo/client-integration-react-router
原文对照：https://npmcn.com/package/%40apollo/client-integration-react-router/?lang=original
项目主页：https://github.com/apollographql/apollo-client-integrations#readme
源码仓库：https://github.com/apollographql/apollo-client-integrations

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：43.6 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- peer 依赖：@apollo/client ^4\.0\.0，react ^19，react-router ^7\.2\.0-pre\.3，rxjs ^7\.3\.0
- 首次发布：2025-02-12T17:36:29.522Z
- 最新版本发布：2026-04-09T15:19:43.165Z
- 近 30 天下载量：35972（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 4 个）

## 中文简介

这个软件包提供阿波罗客户端和React Router 7之间的集成,以支持现代流式SSSR.

## 安装

```sh
npm install @apollo/client-integration-react-router
```

也可以使用：`pnpm add @apollo/client-integration-react-router`、`yarn add @apollo/client-integration-react-router`、`bun add @apollo/client-integration-react-router`

## README

# @apollo/ 客户端- 整合- 反应- 路由器

这个软件包提供阿波罗客户端和React Router 7之间的集成,以支持现代流式SSSR.

## 阿波罗客户端技能

给予你的AI特工阿波罗专业客户端知识和设置指导:

```sh
npx skills add apollographql/skills --skill apollo-client
```

## 设置

安装依赖性 :

```sh
npm i @apollo/client-integration-react-router @apollo/client graphql
```

创建一个 `app/apollo.ts` 出口额a `makeClient` 函数和一个 `apolloLoader` 创建于 `createApolloLoaderHandler`数字 :

```ts
import { ApolloLink, HttpLink, InMemoryCache } from "@apollo/client";
import {
  createApolloLoaderHandler,
  ApolloClient,
} from "@apollo/client-integration-react-router";

// `request` will be available on the server during SSR or in loaders, but not in the browser
export const makeClient = (request?: Request) => {
  return new ApolloClient({
    cache: new InMemoryCache(),
    link: new HttpLink({ uri: "https://your.graphql.api" }),
  });
};
export const apolloLoader = createApolloLoaderHandler(makeClient);
```

> \[大  
> `ApolloClient` 需要从 `@apollo/client-integration-react-router`,而不是从 `@apollo/client`。 。 。 .

运行 `yarn react-router reveal`创建文件 `app/entry.client.tsx` 财务报告和审定财务报表 `app/entry.server.tsx`。 。 。 .

调整 `app/entry.client.tsx`数字 :

```diff
+import { makeClient } from "./apollo";
+import { ApolloProvider } from "@apollo/client";

startTransition(() => {
+ const client = makeClient();
  hydrateRoot(
  document,
  <StrictMode>
+    <ApolloProvider client={client}>
       <HydratedRouter />
+    </ApolloProvider>
  </StrictMode>
  );
});
```

调整 `app/entry.server.tsx`数字 :

```diff
+import { makeClient } from "./apollo";
+import { ApolloProvider } from "@apollo/client";

export default function handleRequest(
  // ...
) {
  return new Promise((resolve, reject) => {
  // ...
+ const client = makeClient(request);
  const { pipe, abort } = renderToPipeableStream(
+   <ApolloProvider client={client}>
      <ServerRouter
        context={routerContext}
        url={request.url}
        abortDelay={ABORT_DELAY}
      />,
+   </ApolloProvider>,
    {
      [readyOption]() {
        shellRendered = true;
```

添加 `<ApolloHydrationHelper>` 改为 `app/root.tsx`

```diff
+ import { ApolloHydrationHelper } from "@apollo/client-integration-react-router";

export function Layout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      // ...
      <body>
-        {children}
+        <ApolloHydrationHelper>{children}</ApolloHydrationHelper>
        <ScrollRestoration />
        <Scripts />
      </body>
    </html>
  );
}
```

## 使用量

### 使用 `apolloLoader` 与 `useReadQuery`

你现在可以使用 `apolloLoader` 函数以创建阿波罗启用的加载器:

```ts
export const loader = apolloLoader<Route.LoaderArgs>()(({ preloadQuery }) => {
  const myQueryRef = preloadQuery(MY_QUERY, {
    variables: { someVariable: 1 },
  });
  return {
    myQueryRef,
  };
});
```

> \[大  
> 要向您提供更好的类型脚本支持, 您需要两次调用此方法 : `apolloLoader<LoaderArgs>()(loader)`

那你可以吃这个 `myQueryRef` 对象为 `useReadQuery` 在组件中:

```ts
export default function Home() {
  const { myQueryRef } = useLoaderData<typeof loader>();

  const { data } = useReadQuery(myQueryRef);

  return (
    <div> do something with `data` here </div>
  )
```

## 常见问题

### @apollo/client-integration-react-router 是什么？

这个软件包提供阿波罗客户端和React Router 7之间的集成,以支持现代流式SSSR\.

### 如何安装 @apollo/client-integration-react-router？

在项目目录运行 npm install @apollo/client-integration-react-router，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@apollo/client（^4\.0\.0）、react（^19）、react-router（^7\.2\.0-pre\.3）、rxjs（^7\.3\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @apollo/client-integration-react-router 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @apollo/client-integration-react-router 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @apollo/client-integration-react-router 可以商用吗？

@apollo/client-integration-react-router 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @apollo/client-integration-react-router 的下载量有多少？

根据 npm 官方下载统计，@apollo/client-integration-react-router 在 2026/10/07 – 2026/11/05 这 30 天内被下载 35,972 次，日均约 1,199 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @apollo/client-integration-react-router 还在维护吗？

最新版本 0\.14\.5-alpha\.0 发布于 2026/04/09（6 个月前）；至今共发布 12 个版本，其中过去 12 个月发布了 4 个；首次发布于 2025/02/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

