@gadgetinc/client-hooks

中文文档
0.1.7发布于 2026/02/10MITTypeScriptESM + CJS近 30 天下载 3.1万

此套件包含用于React/Preact库中用于Gadget应用程序的核心钩子的共享执行. @gadgetinc/client-hooks 提供框架不可识别的钩子执行,这些执行被像 qqgadgetinc 这样的框架特定包所消耗

中文使用文档
文档目录8 节
  1. 概览
  2. 建筑
  3. 可用钩
  4. 查询钩
  5. 变形钩
  6. 工具钩
  7. 框架软件包如何使用此软件包
  8. 对于 Gadget 开发者

客户钩

此套件包含用于React/Preact库中用于Gadget应用程序的核心钩子的共享执行. @gadgetinc/client-hooks 提供框架不可知的钩子执行,这些钩子被框架特定软件包所消耗,如 @gadgetinc/react 财务报告和审定财务报表 @gadgetinc/preact。 。 。 .

注意开发人员不需要直接使用此软件包,而是应该使用其生成的客户端加特定框架绑定软件包,如 @gadgetinc/react。 。 。 .

概览

@gadgetinc/client-hooks 设计为: 运行时间适配器模式 ,允许相同的钩子逻辑跨越不同的UI框架(React,Preact等). 套件导出 :

  • 查询和变异 Gadget API 的核心钩子执行
  • A 类 RuntimeAdapter 用于执行特定框架软件包的接口
  • 登记系统 registerClientHooks 将钩子绑入特定框架

建筑

库使用适配器模式保持框架不可知性:

interface RuntimeAdapter {
  GadgetApiContext: Context<GadgetApiContext>;
  framework: FrameworkBindings; // useState, useEffect, useMemo, etc.
  urql: UrqlBindings; // useQuery, useMutation
}

特定框架软件包( 如 @gadgetinc/react)提供适配器的应用,将其映射到其框架的原始,然后调用 registerClientHooks 用适配器初始化钩子.

可用钩

查询钩

  • useFindOne - 以身份证获取单一记录
  • useMaybeFindOne - 通过身份证获取单一记录,如果找不到则返回无效
  • useFindMany - 获取带有过滤、排序和页码的记录页面
  • useFindFirst - 获取第一个记录匹配标准
  • useMaybeFindFirst - 获取第一个记录匹配标准, 如果找不到则返回无效
  • useFindBy - 以独特的字段值获取记录
  • useGet - 获取单通记录(例如当前会话)
  • useView - 从后端视图获取记录

变形钩

  • useAction - 在模型记录上运行动作(创建、更新、删除等)
  • useBulkAction - 立即对多个记录进行动作
  • useGlobalAction - 开展全球行动

工具钩

  • useFetch - 让 HTTP 请求到后端路由
  • useEnqueue - 安排背景行动
  • useQuery - 低等图形QL 查询钩
  • useMutation - 低等图克QL突变钩
  • useApi - 访问 Gadget API 客户端实例
  • useConnection - 访问 Gadget 连接实例
  • useCoreImplementation - 获取核心实施细节

框架软件包如何使用此软件包

框架专用软件包,如 @gadgetinc/react 遵循此模式 :

  1. 进口车钩和公用事业 @gadgetinc/client-hooks
  2. 创建一个 RuntimeAdapter 执行《公约》和《京都议定书》
  3. 创建一个 Provider 调用组件 registerClientHooks
  4. 再出口终端用户的钩子

示例

import { registerClientHooks, useAction, useFindMany } from "@gadgetinc/client-hooks";
import { useContext, useMemo /* ... */ } from "react";
import { useQuery, useMutation } from "urql";

// Create adapter for React
const adapter: RuntimeAdapter = {
  framework: { useContext, useMemo /* ... */ },
  urql: { useQuery, useMutation, Provider },
  GadgetApiContext: createContext(/* ... */),
};

// Provider component initializes the hooks
export const Provider = ({ api, children }) => {
  const { gadgetClient, urqlClient } = registerClientHooks(api, adapter);
  // ... render provider with context
};

// Re-export hooks for users
export { useAction, useFindMany /* ... */ };

对于 Gadget 开发者

这个包旨在减少React和Preact(以及可能的其他框架)之间的代码重复. 添加新功能时 :

  1. 执行钩入逻辑 @gadgetinc/client-hooks
  2. 使用 RuntimeAdapter 任何针对具体框架的呼吁
  3. 从包中导出钩子
  4. 从框架包中再出口, 如 @gadgetinc/react

钩子注册系统使用支架图案,如果在正常位置外调用,钩子会丢出有用的错误 Provider 上下文,然后改为一次实际执行 registerClientHooks 名为.

版本与发布记录

@gadgetinc/client-hooks 共发布 8 个版本,首次发布于 2025/10/30;过去 12 个月发布了 4 个版本。

版本发布日期距今
0.1.7latest2026/02/109 个月前
0.1.62026/01/0310 个月前
0.1.52025/12/0411 个月前
0.1.42025/11/1711 个月前
0.1.32025/11/131 年前
0.1.22025/10/301 年前

关于 @gadgetinc/client-hooks 的常见问题

@gadgetinc/client-hooks 是什么?

此套件包含用于React/Preact库中用于Gadget应用程序的核心钩子的共享执行. @gadgetinc/client-hooks 提供框架不可识别的钩子执行,这些执行被像 qqgadgetinc 这样的框架特定包所消耗

如何安装 @gadgetinc/client-hooks?

在项目目录运行 npm install @gadgetinc/client-hooks,或使用 pnpm add / yarn add / bun add。

@gadgetinc/client-hooks 支持 TypeScript 吗?

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

@gadgetinc/client-hooks 支持 ESM 还是 CommonJS?

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

@gadgetinc/client-hooks 可以商用吗?

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

@gadgetinc/client-hooks 的下载量有多少?

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

@gadgetinc/client-hooks 还在维护吗?

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