JS Item 用于在操作栏中渲染一个“自定义操作项”。你可以直接编写 JavaScript / JSX,输出任意 UI,例如按钮、按钮组、下拉菜单、提示文本、状态标签或小型交互组件,并在组件内部调用接口、打开弹窗、读取当前记录或刷新区块数据。
它可用于表单工具栏、表格工具栏(集合级)、表格行操作(记录级)等位置,适合以下场景:
.png)
JS Action:更适合“点击按钮后执行一段脚本”,重点是行为逻辑。JS Item:更适合“自己渲染一个操作项”,既控制界面,也控制交互逻辑。如果只是想给现有按钮补充点击逻辑,优先使用 JS Action;如果希望自定义操作项的界面结构或渲染多个控件,优先使用 JS Item。
JS Item 运行时会注入常用能力,可直接在脚本中使用:
ctx.render(vnode):将 React 元素、HTML 字符串或 DOM 节点渲染到当前操作项容器;ctx.element:当前操作项的 DOM 容器(ElementProxy);ctx.api.request(options):发起 HTTP 请求;ctx.openView(viewUid, options):打开已配置的视图(抽屉 / 对话框 / 页面);ctx.message / ctx.notification:全局提示与通知;ctx.t() / ctx.i18n.t():国际化;ctx.resource:集合级上下文的数据资源,例如读取选中记录、刷新列表;ctx.record:记录级上下文的当前行记录;ctx.form:表单级上下文的 AntD Form 实例;ctx.blockModel / ctx.collection:所在区块与集合元信息;ctx.requireAsync(url):按 URL 异步加载 AMD / UMD 库;ctx.importAsync(url):按 URL 动态导入 ESM 模块;ctx.libs.React / ctx.libs.ReactDOM / ctx.libs.antd / ctx.libs.antdIcons / ctx.libs.dayjs / ctx.libs.lodash / ctx.libs.math / ctx.libs.formula:内置常用库,可直接用于 JSX 渲染、时间处理、数据处理与数学运算。实际可用变量会随操作项所在位置不同而有所差异。例如表格行操作通常可访问
ctx.record,表单工具栏通常可访问ctx.form,表格工具栏通常可访问ctx.resource。
Snippets:打开内置代码片段列表,可搜索并一键插入到当前光标位置。Run:直接运行当前代码,并将运行日志输出到底部 Logs 面板;支持 console.log/info/warn/error 与错误高亮定位。
JS Action,实现更直接。try/catch 和用户提示,避免异常静默失败。ctx.resource?.refresh?.() 或所在区块资源主动刷新数据。