# @1mn/react 中文文档

规范地址：https://npmcn.com/package/%401mn/react/

版本：0\.4\.0
npm 元数据更新时间：2026-07-06T06:33:34.159Z
中文译文更新时间：2026-11-05T20:37:29.261Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%401mn/react
原文对照：https://npmcn.com/package/%401mn/react/?lang=original
项目主页：https://github.com/usefulagents/1mn-sdk#readme
源码仓库：https://github.com/usefulagents/1mn-sdk

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

- 包体积（解压后）：178 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：react \>=17\.0\.0，react-dom \>=17\.0\.0
- 首次发布：2026-06-11T18:59:20.732Z
- 最新版本发布：2026-07-06T06:33:34.049Z
- 近 30 天下载量：25531（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

1mn SDK的回放装订——嵌入式产品分析,会话回放,错误跟踪,用户管理,以及客户反馈(PostHog/Sentry-like). 自足:npm安装+,无片段.

## 安装

```sh
npm install @1mn/react
```

也可以使用：`pnpm add @1mn/react`、`yarn add @1mn/react`、`bun add @1mn/react`

## README

# @ 1mn/ 反应

反应约束 [1分钟](https://1mn.ai/) SDK——内置 **产品分析、误差跟踪、, 用户管理** (postHog/ Sentry-like) 用于您的 React 或 Next.js app.

自足:它捆绑了SDK核心,所以 `npm install` +一个提供者是您需要的。 没有 片段,没有脚本标签.

-   📈 **分析** ——自动页面视图(包括SPA导航),会话,网络要害,以及自定义事件.
-   👥 **用户管理** ——识别您的登录用户(使用电子邮件),并在您1mn的仪表板上观看.
-   🐛 **错误** ——未发现例外和未处理的拒绝自动捕获并分组.
-   💬 **反馈** ——一来一来 `<FeedbackWidget>` (或无头钩),将客户反馈作为门票存档.
-   🎬 **会话重放** – 从您的仪表盘中选择每个键入;记录器(rrweb)懒惰的负载只用于被采样的会话,所以它永远不会触及到这个捆绑的大小. 默认关闭; 输入被掩盖 .
-   QQ~9 KB,零运行时间依赖,SSR安全.

## 安装

```bash
npm install @1mn/react
```

## 快速启动

将您的应用程序包装一次 `OnemnProvider` 并传递公用钥匙`1mn_pk_…`从 **用户** 选项卡 在您的1mn仪表板)加上您的登录用户:

```tsx
import { OnemnProvider } from "@1mn/react";

export default function App({ children, user }) {
  return (
    <OnemnProvider apiKey="1mn_pk_xxx" user={user}>
      {children}
    </OnemnProvider>
  );
}
```

就是这样——网页视图,网络动态,错误自动被捕获 `user` 已确认 (与 `email`编号 :`name`) 凡所设. 何时 `user` 变成 `null` SDK重装.

### 自定义事件

```tsx
import { useOnemn } from "@1mn/react";

function CheckoutButton() {
  const onemn = useOnemn();
  return (
    <button onClick={() => onemn.capture("checkout_started", { plan: "pro" })}>
      Upgrade
    </button>
  );
}
```

### 客户反馈

收集一个组件的应用反馈。 在部件中放入浮动发射器+模式:

```tsx
import { FeedbackWidget } from "@1mn/react";

<FeedbackWidget />;
```

或从自己的按钮驱动模式( 无发射装置) :

```tsx
import { useState } from "react";
import { FeedbackWidget } from "@1mn/react";

function Sidebar() {
  const [open, setOpen] = useState(false);
  return (
    <>
      <button onClick={() => setOpen(true)}>Feedback</button>
      <FeedbackWidget launcher={false} open={open} onOpenChange={setOpen} />
    </>
  );
}
```

你更喜欢自己的UI? 使用无头钩( 或 `useOnemn().feedback`:

```tsx
import { useFeedback } from "@1mn/react";

const { send } = useFeedback();
send("Love the new dashboard!");
```

每一份划界案都发出a `$feedback` 活动。 在你的1mn仪表板中,这些被归档为 **反馈 罚单** 在你积压的 分解—— 他们从来没有触发一个自主的代理 运行自己.

### Next.js (App路由器) (英语)

`OnemnProvider` 是客户部分——将其变成 `"use client"` 边界(例如a) `providers.tsx` 包起来 `children` 在您的根布局中。 这是SSR安全:没有运行直到 浏览器水合物. `<FeedbackWidget>` 也是客户部分.

### 反应路由器 7 / Remix / TanStack Start (SSR)

`OnemnProvider` - 安全无虞 **普通模块** 在您的根路径中( 例如) . `app/root.tsx`包着你的 `<Outlet />`数字 :

```tsx
// app/root.tsx — a normal module, NOT a *.client.tsx file
import { OnemnProvider } from "@1mn/react";
import { useSession } from "./lib/auth-client";

export default function App() {
  const { data: session } = useSession();
  return (
    <OnemnProvider apiKey="1mn_pk_xxx" user={session?.user}>
      <Outlet />
    </OnemnProvider>
  );
}
```

> ⚠️ **别放 `OnemnProvider` (或周围的包装) `*.client.tsx` 归档和渲染 在SSR树上.** 反应路由器 7, Remix 和 Vite 空 `*.client.*` 服务器构建中的模块, 因此导入是 `undefined` 在SSR和React中弹出 `<undefined>` —— 说 **HTTP 500 每架 路线.** `OnemnProvider` 不需要只为客户;它已经是SSR安全了.

狦 `user`/会话钩是只客户(它生活在 `*.client.*` 模块,或为 `undefined` 打开 服务器,保留 `OnemnProvider` 安全无虞的安保部 将识别电话传到一个小孩身上 后加护卫`useOnemn().identify(...)` 内置 a `useEffect`)————别让 仅限整个供应商客户端。 把它接入后,确认现场还在返回 `200`没有 `500`。 。 。 .

## API 密码

### `<OnemnProvider apiKey host? user? >`

| Prop | 类型 | 页:1 |
| --- | --- | --- |
| `apiKey` | `string` | 您的公用钥匙( Y)`1mn_pk_…`。必须. |
| `host` | `string` | 入涅槃出处. 默认为 1mn 收藏器 . |
| `user` | `{ id, email?, name? } | null` | 已签名的用户 。 当它有电子邮件时被确认. |

### `useOnemn()`

回返 `{ capture, identify, reset, set, feedback, optOut, optIn }`. 互为稳定; SSR-安全(服务器上和init前没有操作).

-   `capture(event, properties?)` ——定制事件.
-   `identify(id, set?, setOnce?)` - 通常不需要,如果你通过了 `user` 到供养.
-   `set(properties)` ——更新人物属性而无需重新识别.
-   `feedback(message, properties?)` ——发送应用反馈/支持信息.
-   `reset()` 明确身份(日志);当 `user` 清除.
-   `optOut()` 编号 : `optIn()` ——停止/恢复发送.

### `<FeedbackWidget />`

滴入回馈发射装置+模式. 所有道具可选 :

| Prop | 类型 | 页:1 |
| --- | --- | --- |
| `launcher` | `boolean` | 显示浮动发射器按钮 。 默认 `true`。 。 。 . |
| `open` | `boolean` | 控制开放状态。 放弃失控. |
| `onOpenChange` | `(open: boolean) => void` | 打开/关闭回调. |
| `label` | `string` | 发射机文字. 默认 `"Feedback"`。 。 。 . |
| `title` | `string` | 摩多头. 默认 `"Send feedback"`。 。 。 . |
| `description` | `string` | 子文为标题下. |
| `placeholder` | `string` | 文本区占位符 . |
| `position` | `"bottom-right" | "bottom-left"` | 发射口 默认 `"bottom-right"`。 。 。 . |
| `accentColor` | `string` | 主按钮/ 发射器颜色 . |
| `properties` | `Record<string, unknown>` | 额外道具合并为 `$feedback` 活动. |
| `onSubmit` | `(message: string) => void` | 在成功发送后被召唤. |

### `useFeedback()`

回返 `{ send(message, properties?) }` 用于构建自己的反馈 UI.

### `getOnemn()`

现场客户端(或 `null` ,用于非组件代码.

## 隐私

默认情况下, SDK 捕捉到没有 DOM 内容( 没有自动捕捉) 和没有 IP 衍生的地理和船只 `optOut()`。 。 。 . **会话重放** 只有一个例外,而且 **关闭,除非你启用它** 您的钥匙 在1mn仪表板中:当操作时,它记录了抽样部分会话的DOM/交互通过 rrweb,默认情况下隐藏文本输入(添加) `onemn-block` 编号 : `onemn-mask` )),以隐藏区域. `optOut()` 也停止录音。 您是终端用户数据的数据控制器—— 如果您启用的话 重新播放,告诉访客(欧盟/英国/CA同意).

## 许可证

麻省理工学院——见 [自由主义](https://npmcn.com/package/%401mn/react/LICENSE)。 。 。 .

## 常见问题

### @1mn/react 是什么？

1mn SDK的回放装订——嵌入式产品分析,会话回放,错误跟踪,用户管理,以及客户反馈\(PostHog/Sentry-like\)\. 自足:npm安装\+,无片段\.

### 如何安装 @1mn/react？

在项目目录运行 npm install @1mn/react，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（\>=17\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @1mn/react 支持 TypeScript 吗？

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

### @1mn/react 支持 ESM 还是 CommonJS？

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

### @1mn/react 可以商用吗？

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

### @1mn/react 的下载量有多少？

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

### @1mn/react 还在维护吗？

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

