@frondruntime/react

中文文档
0.5.0发布于 2026/10/22MITTypeScriptES Module零依赖近 30 天下载 3691

效果驱动的 Frond 运行时的反应适配器 .

中文使用文档
文档目录10 节
  1. 安装
  2. 提供者
  3. 读取节点
  4. 读取无悬念
  5. 发布信号
  6. 周期钩
  7. 测试
  8. 移动
  9. 文档
  10. 大赦国际的使用

@ frondruntime/反应

Frond的回放适配器:提供者,Suspense-ready节点钩,预装,控制,错误恢复,以及回放测试帮助器.

安装

bun add @frondruntime/core @frondruntime/react effect mobx mobx-react-lite

@frondruntime/react 取决于运行时间从 @frondruntime/core。 。 。 . effect, (中文(简体) ), mobx,以及 react 是同级运行时间合同。 读取可观测节点字段的组件应当使用 observer 从 mobx-react-lite。 。 。 .

提供者

import * as Frond from "@frondruntime/core";
import * as FrondReact from "@frondruntime/react";

const runtime = Frond.createRuntime();

export function App() {
  return (
    <FrondReact.FrondProvider runtime={runtime}>
      <Routes />
    </FrondReact.FrondProvider>
  );
}

读取节点

import * as FrondReact from "@frondruntime/react";
import { observer } from "mobx-react-lite";

const ProfilePanel = observer(({ userId }: { userId: string }) => {
  const profile = FrondReact.useNode(ProfileNode, { userId });

  return <h1>{profile.displayName}</h1>;
});

useNode 准备状态中暂停,并将准备状态失败丢入最近的出错边界。 渲染路径只接收一个已准备好的作者节点实例 .

读取无悬念

const ProfileBadge = observer(({ userId }: { userId: string }) => {
  const read = FrondReact.useNodeRead(ProfileNode, { userId });

  switch (read._tag) {
    case "Ready":
      return <h1>{read.result.displayName}</h1>;
    case "Pending":
      return <Spinner />;
    case "Error":
      return <RetryBanner error={read.error} />;
    default:
      return null; // Unwired | Idle
  }
});

useNodeRead 从不向悬疑区或错误边界投掷。 它返回读取的运行时间 : Unwired | Idle | Pending | Ready | Error - 用于必须使每个状态内化而不是将权力下放到边界的部件。 打开 Ready, (中文(简体) ), read.result 准确是宣布的结果类型 read.node 是作者类实例。 它仍然驱动同样的冷启动准备启动 并订阅变化, 因此节点 进展完全按照它将在 useNode编号 :useNodeState。 。 。 .

发布信号

usePublish 将一个组件绑在一个信号信道,该信道的名称和有效载荷宣布:

const publish = FrondReact.usePublish(Checkout);

<button type="button" onClick={() => void publish("checkout.started", { cartId, total })}>
  Check out
</button>;

出版商是稳定的,而运行时间和频道是 - 一个频道通常是一个模块常数 - 因此它可以是其他钩子的依赖. 一旦每个订阅者运行完毕,发布就会解决,一个失败的订阅者被报告为运行时间事件而不是发布者,所以 void 在呼叫站点没有故障.

有一件事是拒绝的 void 不覆盖: 向已停止的运行时间发布失败 FrondRuntimeClosed。当运行时间被换到活树下时,窗口就可到达 createRuntimeCoordinator - 因为这个回调会保持即将结束的运行时间,直到重新生效。 在适用的情况下,以 .catch(() => {}) 而不是说 void。 。 。 .

这是从许多呼叫站点发布的频道的发布路径,这使得频道不断值得输出. 一个全应用域事频道通常是另一种情况:一个单一的发送点,一个每会话信封,以及一个频道常数故意保持不导出 usePublish 无法通过建筑到达。 形状是 调度器节点。频道、事件映射和订阅者看到的内容 @ frondruntime/ core (中文(简体) )。 。 。 .

周期钩

  • useNode - 准备节点或暂停/暂停.
  • useNodeState - 准备节点加操作状态、结果有效性和最后操作失败.
  • useNodeRead - 非扔出标记读取 以渲染每个状态的内线.
  • useNodes - 备用节点的密钥地图.
  • useNodeControls 编号 : useNodesControls - 刷新,驱逐,并释放 不使节点.
  • usePublish - 在一个频道发布输入信号.
  • Preload - 在生孩子前先得到节点.
  • getErrorReport 编号 : getErrorRecovery - 项目运行时间读取错误到 UI 错误边界 .

测试

import * as FrondReactTest from "@frondruntime/react/testing";

测试子路径导出 TestFrondProvider 反应测试需要一个单独的运行时间.

移动

从0.4.0升级? 见核心软件包 移民-0.5.md 用于错误报告更改,包括已贬值的预测字段.

从0.1.0升级? 见核心软件包 移民-0.2.md - 它覆盖了共享作者的更改和反应-变换类型.

文档

大赦国际的使用

Frond是AI辅助(主要是Claude和Codex),在数月内被反复使用,而不是一发生成. 全注: https://frondruntime.dev/ai-use (英语)

版本与发布记录

@frondruntime/react 共发布 8 个版本,首次发布于 2026/06/27;过去 12 个月发布了 8 个版本。

版本发布日期距今
0.5.0latest2026/10/2224 天前
0.4.02026/08/023 个月前
0.3.02026/07/283 个月前
0.2.02026/07/273 个月前
0.1.02026/07/164 个月前
0.0.32026/06/304 个月前

关于 @frondruntime/react 的常见问题

@frondruntime/react 是什么?

效果驱动的 Frond 运行时的反应适配器 .

如何安装 @frondruntime/react?

在项目目录运行 npm install @frondruntime/react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:mobx(>=6 <7)、react(>=18)、effect(^4.0.0)、mobx-react-lite(>=4 <5)、@frondruntime/core(0.5.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@frondruntime/react 支持 TypeScript 吗?

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

@frondruntime/react 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@frondruntime/react 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^20.19.0 || >=22.12.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@frondruntime/react 可以商用吗?

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

@frondruntime/react 的下载量有多少?

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

@frondruntime/react 还在维护吗?

最新版本 0.5.0 发布于 2026/10/22(24 天前);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/06/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。