# @asteby/metacore-runtime-react 中文文档

规范地址：https://npmcn.com/package/%40asteby/metacore-runtime-react/

版本：53\.14\.0
npm 元数据更新时间：2026-11-04T00:07:00.335Z
中文译文更新时间：2026-11-07T00:38:15.801Z
软件包许可：未声明

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

原始 npm 页面：https://www.npmjs.com/package/%40asteby/metacore-runtime-react
原文对照：https://npmcn.com/package/%40asteby/metacore-runtime-react/?lang=original
源码仓库：https://github.com/asteby/metacore-sdk

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

- 包体积（解压后）：7.6 MB，1208 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：7 个
- peer 依赖：react \>=18，sonner \>=1\.7，i18next \>=23，zustand \>=5，date-fns \>=3，react-dom \>=18，lucide-react \>=0\.460，react-i18next \>=13，react-day-picker \>=8，@asteby/metacore-ui ^2\.32\.1，@asteby/metacore-sdk ^3\.18\.1，@tanstack/react-query \>=5，@tanstack/react-table \>=8，@tanstack/react-router \>=1\.100，@testing-library/react \>=14，@module-federation/runtime \>=2\.5
- 首次发布：2026-04-20T20:25:10.841Z
- 最新版本发布：2026-11-04T00:06:59.981Z
- 近 30 天下载量：7685（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：305（近 12 个月 305 个）

## 中文简介

元核心主机的回放运行时间——使附加捐款动态化

## 安装

```sh
npm install @asteby/metacore-runtime-react
```

也可以使用：`pnpm add @asteby/metacore-runtime-react`、`yarn add @asteby/metacore-runtime-react`、`bun add @asteby/metacore-runtime-react`

## README

# @asteby/metacore-运行时的反应

反应运行时间 [元分数](https://github.com/asteby/metacore-sdk) 师曰. 元数据驱动的 CRUD 层将一个表态转换成工作UI:动态表格,表态,动作调度器,槽扩展点,能力门,以及联合加载器.

这是一个 _运行时间_不是UI包 视觉原始人来自 [`@asteby/metacore-ui`](https://npmcn.com/package/%40asteby/ui)。主机通过 React 提供者输入 HTTP 客户端和(可选的)租户-分支上下文;不需要捆绑别名.

## 安装

```bash
pnpm add @asteby/metacore-runtime-react @asteby/metacore-sdk @asteby/metacore-ui
```

端点 : `react`, (中文(简体) ), `react-dom`, (中文(简体) ), `react-i18next`, (中文(简体) ), `i18next`, (中文(简体) ), `@tanstack/react-router`, (中文(简体) ), `@tanstack/react-table`, (中文(简体) ), `date-fns`, (中文(简体) ), `lucide-react`, (中文(简体) ), `sonner`, (中文(简体) ), `zustand`他们被宣布为同龄人 所以反应保持单人状态.

## 出口

| 导出 | 它会做什么 |
| --- | --- |
| `<DynamicTable model="…" />` | 元数据驱动 CRUD 表格 。 可排序,可分解,可过滤,可URL同步,并带有内置对话框. |
| `<DynamicForm fields={…} onSubmit={…} />` | 独立的窗体渲染器 `ActionFieldDef[]`。 。 。 . |
| `<DynamicRecordDialog />` | 创建/ 编辑/ 视图模式 `/metadata/modal/<model>`。 。 。 . |
| `<ActionModalDispatcher />` | 将自定义动作路径到其注册组件、通用窗体或确认对话框. |
| `<AddonLoader />` | 注入联邦 `remoteEntry.js` {\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1}然后叫替顿家来 `register(api)`。 。 。 . |
| `<Slot name="…" />` 编号 : `slotRegistry` | 命名由加词贡献的扩展点 . |
| `<CapabilityGate require="…" />` 编号 : `<CapabilityProvider />` | 有条件的UI 根据能力. |
| `<NavigationBuilder />` 编号 : `useNavigation()` 编号 : `mergeNavigation()` | 将主机侧边栏与加通合并 `manifest.navigation`。 。 。 . |
| `<I18nProvider />` | 折叠 `manifest.i18n` 命名空间进入主机的 i18 次例. |
| `<ApiProvider client={axios} />` 编号 : `useApi()` | 输入主机的 HTTP 客户端 。 每个动态组件都需要. |
| `<BranchProvider branch={…} />` 编号 : `useCurrentBranch()` | 可选的租户部门背景. |
| `useMetadataCache()` | 用于表格/模式元数据的Zustand存储器,持续到本地Storage. `prefetchAll(api)` 温暖它从 `/metadata/all`。 。 。 . |
| `defaultGetDynamicColumns` 编号 : `makeDefaultGetDynamicColumns(helpers)` | 工厂 `<DynamicTable>` 用于将元数据转换为 TanStack 列 defs。 默认读取自 `col.key` (匹配内核合同). |
| `DynamicIcon` | Lucide图标解析器 名称. |
| `<LicenseGate state={…} onActivate={…}>` | 法语:enuelve la app; bloadea con un model-full-screen no descartable cuando la instancia falta/venció; degrada con bang en `grace`编号 :`stale`品牌意识. |
| `<LicenseExpiryBanner state={…} />` 编号 : `<LicenseStatusBadge status={…} />` | Piezas sueltas del gate para Ajustes u otros lugares. 中国植物物种信息数据库. |
| `isLicenseOperable` 编号 : `isLicenseBlocking` 编号 : `isPresetEntitled` 编号 : `isTrialExpired` | 帮助者发作 `LicenseState`, espejo de (法语) `State.Operable()/Blocking()` 德尔后端. |
| `<RealtimeProvider client={…} />` 编号 : `useRealtime()` 编号 : `useRealtimeInvalidate()` 编号 : `useRealtimeStatus()` 编号 : `useRealtimeTick()` | 死路一条 `DATA_EVENT` del 主机( ver) [实时](https://npmcn.com/package/%40asteby/metacore-runtime-react/#readme-realtime)) (中文(简体) ). |

## Í科诺斯

`<Icon name={value} />` (无) `DynamicIcon`{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你应该知道 `{ name, className }`(中文(简体) ) 解释a cualquier valor de ícono que un supend haya guardado. 中国植物物种信息数据库. 圣杯 对 `parseIconSpec(value)`,una función pura que devuelve ,一个真菌pura que 德韦尔夫 `{ kind: 'lucide', name } | { kind: 'emoji', value } | { kind: 'image', src } | { kind: 'unknown', raw }`。 。 。 .

| 格式化 | 埃让普洛斯 | 结果 |
| --- | --- | --- |
| 卢西德 | `Brain`, (中文(简体) ), `credit-card`, (中文(简体) ), `credit_card`, (中文(简体) ), `BrainIcon` | 格莱弗·卢西德 |
| 字体 5/6 | `fas fa-brain`, (中文(简体) ), `fa-solid fa-brain`, (中文(简体) ), `far fa-heart`, (中文(简体) ), `fa fa-user-md`, (中文(简体) ), `fa-brain` | glifo Lucide vía Tatala (英语) `FONT_AWESOME_ALIASES` + 卢西德河口公园 |
| Otras 引信 | `mdi mdi-home`, (中文(简体) ), `bi bi-house`, (中文(简体) ), `ti ti-home`, (中文(简体) ), `ri-home-line`, (中文(简体) ), `mdi:home`, (中文(简体) ), `material-icons home` | (原始内容存档于2012-10-10). Officialización contra Lucide (sin tabla) |
| 爱莫吉 | `🩺`, (中文(简体) ), `👨‍⚕️`, (中文(简体) ), `🇲🇽` | 非独活性血清`Intl.Segmenter` si 存在) |
| 图像 | `https://…`, (中文(简体) ), `/ruta.png`, (中文(简体) ), `./a.svg`, (中文(简体) ), `uploads/a.png`, (中文(简体) ), `data:image/(png|jpeg|webp|gif|svg+xml)` | `<img alt="" loading="lazy">`爱的爱的爱的爱的爱的爱的爱的爱 |
| 奥特罗 | `javascript:…`, (中文(简体) ), `data:text/html`, SVG 内含,文本 libre | `unknown`: 无 se pinta texto crudo (nall o la prop) `fallback`(中文(简体) ) |

Lucide no incluye logos de marca (github, twitter...):拉斯·马尔卡斯(英语:las marcas (film))`fab fa-github`克丹语 `unknown` salvo que el host registre un resolutor. 中国植物物种信息数据库.

**奥尔登·德·索罗西翁:** (1) 宿主、研究者; (原始内容存档于2018-10-21) (英语). el primerro que devuelve algo ditinto de `null` gana; (2) el parser integrado. 中国植物物种信息数据库.

```tsx
import { registerIconResolver } from '@asteby/metacore-runtime-react'

// Al arrancar el host. Devuelve un IconSpec (reusa los renderers del SDK),
// un ReactNode (se pinta tal cual) o null para ceder.
const dispose = registerIconResolver((spec) =>
  spec.startsWith('sprite:') ? <svg><use href={`/sprite.svg#${spec.slice(7)}`} /></svg> : null,
)
```

**列数 :** `type: 'icon'` una一栏的元数据 (tabla y detalle) (英语). Es 选入: una exto lamada `icon` 没有坎比亚。 粗略的轮廓 没有自已的主人 `-`。 。 。 .

`DynamicIcon` (menús, botones de acción) 没有pinta imágenes, solo glifos/emoji/nodos del host; para imágenes usa `<Icon>` o 栏a `type: 'icon'`。 。 。 .

**答复:** los íconos 儿子`aria-hidden`(salvo que se pase) (英语) `label`。 。 。 .

## 实时

埃尔主机 expone un `RealtimeAPI` (单位:千美元)`@asteby/metacore-sdk`)——以"以"为主"为主 `host.realtime` (原始内容存档于2013-10-12) (英语). las rutas inmersivas y como `api.realtime` (单位:千美元) `register(api)`。 。 。 . 失败帧子 org- scoped y **罪恶的活佛** (dentidad + qué llaves) (法语) cambiaron); la reacción típica es "refetch lo que mestro". 维基语录链接:名人名言 - 文学作品 - 谚语 - 谚语 - 谚语 - 谚语 - 谚语 - 谚语.

```tsx
// Host: montar una vez, dentro del QueryClientProvider y del provider de WS.
<RealtimeProvider client={realtimeClient}>…</RealtimeProvider>

// Addon federado: pasar el cliente explícito — el contexto React NO cruza la
// frontera de module federation, el objeto plano sí.
useRealtime({ models: ['SalesOrder'], client: host.realtime }, (e) => {
  if (e.action === 'resync' || e.id === currentId) refetch()
})

// Invalidar react-query (usa SIEMPRE el QueryClient del host — nunca crees otro):
useRealtimeInvalidate({ models: ['SalesOrder', 'sales_order_items'], client: host.realtime })

// Tablas y kanbans: opt-in por prop (apagado por default).
<DynamicTable model="SalesOrder" realtime />
<DynamicKanban model="WorkOrder" realtime />
// …o global para todo lo que cuelgue del provider:
<RealtimeProvider client={realtimeClient} defaultRealtime>
```

`useRealtimeInvalidate` 无效的 toda 查询 cuya 密钥( 字符串, 阵列 anidao u) objeto)为模范,拉塔布拉奥所提供 `addon.Model` 塔姆比昂区 una ruta (英语:`/data/sales_orders?…`) (中文(简体) ). (原始内容存档于2018-09-21) (英语). Se puede replazar el matcher con `match`。 。 。 . Todos los hooks son no-op Cuando no hay cliente (host sin real time) (英语:Host sin real time). 托多斯·卢斯·卢斯(英语:Todos los hooks) 儿子·诺-奥·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·.

## Blindaje de licencia (英语:`LicenseGate`(中文(简体) )

海关关卡 **sDK小学**: 业务和待办事宜 (原始内容存档于2013-10-12). en una línea. 负责官员:

-   **内核** → _执行_ (正文: está permitido; firma/verifica el estado).
-   **SDK 软件** (斯特·莫杜洛) • _UX 密码_ (门,旗,徽.
-   **中枢** → _共和国_ (英语:Mintea el sord Ed25519).
-   **主机** → _线条_ (续) `LicenseState` (原始内容存档于2012-10-12). con su propio transporte y montan el gate.

英斯语 **内核依赖性**: 没有导入 su 客户端 ni fija su versión 。 埃尔主机 (原始内容存档于2018-10-21) (中文(简体) ). resuelve el estado (p. ej. `GET /admin/license`? y pasa una promesa ? ? ? ? ? ? ? ? ? ? ? ? ? `onActivate`。 。 。 .

```tsx
import { LicenseGate } from '@asteby/metacore-runtime-react'
import { useLicenseState, useActivateLicense } from './features/license'

export function Shell({ children }) {
  const { data: state } = useLicenseState()          // GET /admin/license
  const activate = useActivateLicense()              // POST /admin/license/activate

  return (
    <LicenseGate
      state={state}
      onActivate={(code) => activate.mutateAsync(code)}
      branding={{ name: brand.name, logo: brand.logo }}
      onManage={() => navigate('/settings/license')}
    >
      {children}
    </LicenseGate>
  )
}
```

-   犯罪执法 o estado 可操作`valid`编号 :`stale`编号 :`grace`儿童成长. `stale`编号 :`grace` 蒙丹·德马斯·德格拉达多`expired` (c) 地方运输系统.
-   执法 `missing`编号 :`invalid`编号 :`expired` • 模式 **口号** 行动公式. `plan === 'trial'` + 键 `expired` \* 复制本 _"Tu prueba gratuita terminó" (法语)_。 。 。 .
-   行动组织 **罪孽重现**: el host refresca el (英语: `state` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}是的 德蒙塔门.
-   **盖多波罗尔** 错误 `canActivate` (默认) `true`{\\fn华文仿宋\\fs16\\1chd1d1d1} `false`{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我愿意为您效劳 **罪状** 劳动与劳动部 `readOnlyMessage` (默认 : _"语言学研究会"(Contacta al Administa de la plataforma para activar la licencia)_) (中文(简体) ). Así solo el Platface Root/ Superadmin activa; as demás usuarios ven el boropeo con la indicación de quién contactar. 中国植物物种信息数据库.

## 国家妇女委员会`OrgRuntimeProvider`(中文(简体) )

(原始内容存档于2018-10-21) (英语). Enuelve la app autenticada una vez y todas las tablas, kanban, diálogos y 环境简介:

```tsx
<OrgRuntimeProvider
  timeZone={org.timezone}            // 'America/Mexico_City' — fechas en la zona de la org
  currency={org.currency_code}       // 'MXN' — moneda por defecto
  numberLocales={{ es: 'es-MX' }}    // números y dinero como en México: 11,461.50 (no 11.461,50)
  systemActor={{ name: 'Gobi', avatarUrl: '/brand/gobi.png' }} // quién aparece cuando "lo hizo el sistema"
>
  <App />
</OrgRuntimeProvider>
```

-   `numberLocales` 地方地图 `Intl` (意大利语) {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}请说句名 Aplica a celdas (英语) `number`编号 :`currency`总计 馅饼,可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口可口 拉斯语Name 妇女委员会`es`编号 :`en`) (中文(简体) ). 钩子: `useNumberLocale(lang)`, (中文(简体) ), `resolveNumberLocale(lang, map)`。 。 。 .
-   `systemActor` (原始内容存档于2018-10-21) (英语). reemplaza el “Sistema' genérico en celdas `creator` 编号 : `created_by.*`, (中文(简体) ), `AuditInfo`, (中文(简体) ), `ActivityTimeline`, (中文(简体) ), `RecordHistory` y diálogo (英语) {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我很高兴见到你 (原始内容存档于2018-03-29). Sin supporters se Conserva “Sistema”. 钩: `useSystemActor()`· ; {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}雷格拉·康帕蒂达: `isSystemActorColumn(renderAs, key, namePath)`。 。 。 .

## 设置 y salud de addons (`SetupFlow`, (中文(简体) ), `HealthCard`, (中文(简体) ), `AddonConfigSurface`(中文(简体) )

UI 声明段落 `contributions.setup` 编号 : `contributions.health`塔姆比昂语本身 进口suelta con `@asteby/metacore-runtime-react/setup` (solo esta porción.) (意大利语).

```tsx
import { SetupFlow, HealthCard, RecordsTable, StepStatusBadge, AddonConfigSurface } from '@asteby/metacore-runtime-react'

<SetupFlow flow={flowDef} client={client} onComplete={...} renderCustom={...} />
```

-   **`SetupFlowClient`** 适应者: `getState()`, (中文(简体) ), `runStep(key, {values?, action?})`, (中文(简体) ), `skipStep(key)`,y 逻辑 `saveStep(key, values)` (自动守护可见)y `subscribe(cb)` (推倒语. El estado vive en el servidor, así que el flujo es reanudable: 爱丽丝·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克·克 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}不说粗话.
-   Estados por paso: (英语) `pending | running | ok | warn | error | blocked`。 。 。 . `depends_on` 口语a 依附关系 `ok`, (中文(简体) ), `warn` u 省略; los pasos 语句 `optional` se pueden 省略 你没有frenan la finalización.
-   (一) Polling con backoff (2 s x1.6, tope 30 s) Mientras algo Corre; `retry_after_s` 巴索·曼达 (1分5分钟). 拖车 `maxPollAttempts` (40) deja de consultar y ofrece “Revisar ahora'.
-   `kind=form` 雷乌蒂利扎 `groupFieldsBySection` + 键 `FieldSection`编号 :`WizardProgress` 页:1 `form-layout(-ui)` (secciones o sub-pasos), (英语:, `visible_when` y 露营 `write_only` (无) (原始内容存档于2017-03-27). de vuelta; vacío = conserver. `kind=records` 我们a `RecordsTable` (copiar con fault reback,,,,,,,,,,,,,,,,,,,,,,,,,, (原始内容存档于2018-10-21). estado y diagnóstico por fila. `kind=custom` 我们a `renderCustom` o el slot 联邦 `step.slot ?? setup.<flow.key>.<step.key>` (道具: `step, state, run, refresh`) (中文(简体) ).
-   `fix` 妇女: `{action}` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我很高兴见到你, `{step}` 食人鱼 帕苏, `{url}` 独唱 http(s) o ruta relativa (英语)`onNavigate` i el host enruta) (英语).
-   特莱托斯语( 英語:Textos es/en incluidos)`useSetupT`; se pueden sobrescribir con claves i18nnext 中文本无需改动 `setup.*`。 。 。 .

### 释迦 `UnifiedAddonConfigDialog` (对)a `AddonConfigSurface`

编号 `ops/frontend/src/features/installed-addons/index.tsx`数字 :

1.  硼 `UnifiedAddonConfigDialog`, (中文(简体) ), `ConnectorCredentialFieldControl`, (中文(简体) ), `DynamicConnectorSelect`, (中文(简体) ), `fetchLookupOptions` 尔 `connector-form-model.ts` (ahora viven en el SDK; los helpers se) (英语) 出口 desde el 子路径 `@asteby/metacore-runtime-react/setup`数字 : `shapeMismatch`, (中文(简体) ), `missingRequired`, (中文(简体) ), `parseSaveError`, (中文(简体) ), `safeUrl`.; raíz solo expone los 组件).
2.  进口与蒙塔尔:

```tsx
import { AddonConfigSurface } from '@asteby/metacore-runtime-react'
import { ensureAddonBundle } from '@/features/metacore/use-addon-locales'

const role = useAuthStore((s) => s.auth.user?.role)
const { activeBranch } = useActiveBranch()

<AddonConfigSurface
  addon={addon}
  connector={connector}
  open={open}
  onOpenChange={setOpen}
  onSaved={refetch}
  canManageIssuer={['owner', 'admin', 'superadmin'].includes((role ?? '').trim().toLowerCase())}
  activeBranch={activeBranch ? { id: activeBranchId, name: activeBranch.name } : null}
  ensureAddonBundle={(key, i18n) => ensureAddonBundle(i18n as any, key)}
  displayName={addonDisplayName(addon)}
  expectedOptionKinds={{
    serie_invoice: 'factura',
    serie_credit_note: 'nota_credito',
    serie_payment_complement: 'pago',
  }}
/>
```

请求 `<ApiProvider>` (o pasar ) (或 pasar ) `client={api}`页:1 `QueryClientProvider`· ; `toast` 脱声纳 叛逃问题`notify` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}哦 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}那又怎样? 拉斯克飞地 `installed_addons.*` 尔 `common.*` siguen siendo las de ops: sus traducciones pinnen presentidad sobre el texto del SDK. 互联网档案馆的存檔,存档日期2013-12-21. **`expectedOptionKinds`** (证书 - > `tipo` (原始内容存档于2018-03-31) (英语). es. e (原始内容存档于2018-09-21) (英语). Inyectable y vacío por fecto: el SDK ya no tree lógica financial. 行动 **脱去帕萨罗** (como arriba) para conservar el filtrado actually de series por tipo de documento. 互联网档案馆的存檔,存档日期2013-12-02., p. 3. Diferencia deliberada: unsecreto nunica se rellena desde(不保密) `GET /integrations/:p/values`, (中文(简体) ), (原始内容存档于2018-10-12) (英语). aunque el backend lo devolviera.

## 最小使用量

```tsx
import {
  ApiProvider,
  CapabilityProvider,
  DynamicTable,
} from '@asteby/metacore-runtime-react'
import { api } from './lib/api'

export function App() {
  return (
    <ApiProvider client={api}>
      <CapabilityProvider capabilities={session.capabilities}>
        <DynamicTable model="tickets" />
      </CapabilityProvider>
    </ApiProvider>
  )
}
```

关于道具、反应形状、定制模式和整个表面,见 [`docs/dynamic-ui.md`](https://github.com/asteby/metacore-sdk/blob/main/docs/dynamic-ui.md)。 。 。 .

## 它怎么对内核说话

| 终点 | 用于 |
| --- | --- |
| `GET /metadata/table/<model>` | `<DynamicTable>` (ched. |
| `GET /metadata/modal/<model>` | `<DynamicRecordDialog>` (ched. |
| `GET /metadata/all` | `useMetadataCache().prefetchAll()`。 。 。 . |
| `GET /data/<model>` | `<DynamicTable>` 列表中选择一个选项. |
| `GET /data/<model>/<id>` | `<DynamicRecordDialog>` 视图/编辑. |
| `POST /data/<model>` | 创建. |
| `PUT /data/<model>/<id>` | 更新. |
| `DELETE /data/<model>/<id>` | 删除(单一+批量). |
| `POST /data/<model>/<id>/action/<key>` | `<ActionModalDispatcher>`。 。 。 . |
| `GET /options/<endpoint>` | 关系取取取者+取取取取取取取取取取取取取取取取取. |

所有端点都可以通过 `endpoint` 道具 (英语).

## 构建

```bash
pnpm --filter @asteby/metacore-runtime-react build
```

## 许可证

阿帕奇 - 2.0

## 常见问题

### @asteby/metacore-runtime-react 是什么？

元核心主机的回放运行时间——使附加捐款动态化

### 如何安装 @asteby/metacore-runtime-react？

在项目目录运行 npm install @asteby/metacore-runtime-react，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（\>=18）、sonner（\>=1\.7）、i18next（\>=23）、zustand（\>=5）、date-fns（\>=3）、react-dom（\>=18）、lucide-react（\>=0\.460）、react-i18next（\>=13）、@asteby/metacore-ui（^2\.32\.1）、@asteby/metacore-sdk（^3\.18\.1）、@tanstack/react-query（\>=5）、@tanstack/react-table（\>=8）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @asteby/metacore-runtime-react 支持 TypeScript 吗？

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

### @asteby/metacore-runtime-react 支持 ESM 还是 CommonJS？

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

### @asteby/metacore-runtime-react 可以商用吗？

@asteby/metacore-runtime-react 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @asteby/metacore-runtime-react 的下载量有多少？

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

### @asteby/metacore-runtime-react 还在维护吗？

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

