做一个自定义操作按钮
在 NocoBase 中,操作(Action)是区块里的按钮,用于触发业务逻辑——比如「新建」「编辑」「删除」等。这个示例展示怎么用 ActionModel 做自定义操作按钮,并通过 ActionSceneEnum 控制按钮出现的场景。
前置阅读
建议先了解以下内容,开发时会更顺畅:
- 编写第一个插件 — 插件创建和目录结构
- Plugin 插件 — 插件入口和
load()生命周期 - FlowEngine → 操作扩展 — ActionModel、ActionSceneEnum 基础介绍
- i18n 国际化 — 翻译文件写法和
tExpr()延迟翻译的用法
最终效果
我们要做三个 自定义操作按钮,分别对应三种操作场景:
- 数据表级操作(
collection)— 出现在区块顶部的操作栏,比如「新建」按钮旁边 - 记录级操作(
record)— 出现在表格每行的操作列,比如「编辑」「删除」旁边 - 两者都适用(
both)— 两种场景都会出现
完整源码见 @nocobase-example/plugin-simple-action。如果你想直接在本地跑起来看效果:
下面从零开始,一步步搭建这个插件。
第一步:创建插件骨架
在仓库根目录执行:
详细说明见 编写第一个插件。
第二步:创建操作模型
每个操作需要声明它出现的场景,通过 static scene 属性指定:
数据表级操作
新建 src/client-v2/models/SimpleCollectionActionModel.tsx:
记录级操作
新建 src/client-v2/models/SimpleRecordActionModel.tsx:
两种场景都适用
新建 src/client-v2/models/SimpleBothActionModel.tsx:
三种写法的结构一样——区别只在 static scene 的值和按钮文案。每个按钮都通过 registerFlow({ on: 'click' }) 监听点击事件,用 ctx.message 弹出提示,让用户能看到按钮确实生效了。
第三步:添加多语言文件
编辑插件的 src/locale/ 下的翻译文件:

