复合组件是一组可复用的问题——例如将名字、姓氏、头衔、电子邮件作为单个"人员"单元。你只需定义一次,即可将其放入任意数量的表单,并从一处进行管理。当你改进复合组件后,每个使用它的表单都会在下次发布时获取新版本。
复合组件解决了随着你创建的每个表单而增长的两个问题:
- 一致性——相同的"人员"、"地址块"或"保险单"问题在你所有的表单中保持完全一致,不会因为各个副本被独立编辑而逐渐产生差异。
- 聚合——每个复合组件的答案也会被保存为独立的记录,因此你可以在一个表格中查看所有表单中提交过的每一个"人员"。
复合组件可在表单所及的任何地方工作:网页表单、构建器预览、电话呼叫(NueVoice)、CSV 导出、通知邮件、webhook 以及 React 组件导出。
创建复合组件
有三种创建方式:
- 从复合组件页面——在应用侧边栏打开复合组件并点击新建复合组件。这会打开完整的复合组件编辑器,你可以像构建表单一样添加和配置子问题。
- 从表单——添加一个复合组件问题(调色板的"高级"部分),或将一个列表问题设置为复合组件项,然后点击**选择复合组件...**并使用选择器中的创建选项。新建的复合组件会立即附加到你的问题上。
- 从现有问题组——在构建器中选择一个问题组并点击转为复合组件。其子问题会被转换为一个新的复合组件,该组则被一个引用它的复合组件问题所替换。
一个复合组件最多可容纳 30 个子问题,取自标准问题类型(文本、电子邮件、电话、数字、日期、选项、评分等)。屏幕、组和其他复合组件不能嵌套在复合组件内部。
编辑:三个层级
你可以根据当下需要,以任意深度编辑复合组件:
- 在画布上内联编辑——当某个表单引用了你拥有的复合组件时,其字段会作为该问题的子节点出现在工作流画布上。可以直接在那里编辑标题、设置,添加或删除字段。更改会自动保存到复合组件本身(而非表单),因此它们会对每个使用它的表单可用。
- 选择器——使用更换来切换问题引用的复合组件,或复制他人的复合组件以获得你自己可编辑的副本。
- 完整编辑器——点击打开完整编辑器(或从复合组件页面打开复合组件),获得完整的独立编辑体验,包括用于翻译的语言选项卡和记录视图。
内联编辑修改的是复合组件的工作副本,它由每个引用它的表单共享。在你发布该复合组件并重新发布这些表单之前,它们不会影响已上线、已发布的表单——请参阅下一节。
发布与版本
复合组件采用经过深思熟虑的两步安全模型:
- 工作副本是你编辑的对象。它永远不会展示给受访者。
- 已发布定义是每次你点击复合组件上的发布时创建的不可变快照。发布会提升复合组件的版本号。
当你发布一个表单时,该表单会将复合组件当前的已发布定义冻结到它自己的已发布快照中。从那时起,该表单的受访者始终看到的正是那个版本——即使复合组件之后发生了变化。这意味着:
- 有未发布编辑的复合组件会在其画布徽章上显示一个草稿更改 · 发布药丸标签。点击它即可在你工作的地方直接发布复合组件(如果其他表单也在使用它,系统会要求你确认)。
- 当你发布一个引用了有待定更改的复合组件的表单时,会弹出一个对话框列出所有这些复合组件,让你选择发布复合组件和表单(先发布复合组件,再发布表单)或仅表单(让表单保持使用上次已发布的复合组件版本)。
- 从未发布过的复合组件会阻止表单发布,直到你发布它——因为没有版本可供表单冻结。
要将复合组件的改进推送到现有表单:先发布复合组件,然后重新发布表单。
在表单中使用复合组件
复合组件问题类型
从高级调色板部分添加一个复合组件问题并选择一个复合组件。受访者会在一个屏幕上看到它的所有字段,填写它们,然后用一个确定继续——就像内容由中心化管理的多问题页面。答案会被保存为一个结构化的值,并记录一条复合组件记录。
共享与所有权
复合组件归其创建者所有。队友可以在他们的表单中引用你的复合组件——他们会看到其字段为只读,并附带显示所有者的备注——但只有你能编辑它。任何人都可以点击复制后编辑来派生出他们自己独立的副本。
复合组件 + 列表问题类型
列表问题类型(调色板的"选项"部分)收集重复的项目。将其项目类型设置为复合组件项并选择一个复合组件,受访者就可以添加任意数量的结构化记录——经典的"添加你所有的董事会成员"模式:
- 受访者点击添加条目来追加一条记录;每条记录都是一张包含复合组件字段的卡片。
- 最小/最大项目数设置强制规定需要或允许多少条记录(硬性上限 100)。
- 记录可以被移除,并可折叠以便管理较长的列表——默认一次只展开一条记录。
- 每条记录都被记录为它自己的复合组件记录,并标注其在列表中的位置。
折叠显示模式
显示模式设置(在选择复合组件后显示)控制已折叠记录的呈现方式:
- 紧凑(默认)——记录折叠为单行。使用折叠摘要字段来挑选哪些字段出现在该行中以及它们的顺序——例如
John · Director · john@acme.com。复合组件的第一个字段会被预选;可添加、移除和拖动以重新排序。 - 卡片——记录折叠为一张更高的卡片,显示每个字段的标签和值(破折号标记未回答的字段)。当审阅者需要一目了然地核对记录而无需展开时最为合适。
纯文本列表
列表也可以收集简单的文本项目(项目类型 → 文本项)——输入并按回车键,或使用添加按钮。逐项验证(格式、长度)、防止重复、拖动排序、默认项目以及最小/最大数量均可使用。无需复合组件。
记录:一个复合组件,所有表单
打开一个复合组件并切换到记录,即可查看一个只读表格,包含使用它的所有表单中已保存的每一条记录。每一行都是一个填写完毕的复合组件——无论它来自复合组件问题还是列表中的单个项目。
- 列——每个子字段一列,外加来源表单、提交时间,以及(对于列表记录)项目位置。可隐藏和显示列以聚焦视图。
- 复制为 JSON——每一行都有一个复制按钮,可将完整记录以 JSON 格式放入你的剪贴板。
- 导出——将当前视图下载为 CSV 或 JSON。导出会遵循你的筛选条件和可见列选择。
隐私遵循表单权限:记录视图仅包含来自你有权查看其回复的表单的记录。在启用数据驻留的团队中,记录存储在团队自己的数据库区域。
复合组件与列表的逻辑
逻辑规则能理解复合组件的结构:
- 子字段条件——在条件中针对任意复合组件子答案(例如,如果人员 → 头衔等于"CEO"则跳转)。子字段会出现在条件字段选择器中其父问题之下。
- 列表计数运算符——根据列表有多少项目进行分支:项目计数等于、项目计数大于、项目计数小于。
翻译
复合组件携带自己的翻译,在完整编辑器的语言选项卡中管理。添加一种语言并使用 AI 自动翻译复合组件的名称、描述和每个子字段——与表单使用的引擎相同。翻译是工作副本的一部分,并通过发布流程到达受访者,因此多语言表单会以受访者的语言呈现其复合组件。
电话呼叫
在 NueVoice 呼叫中,复合组件问题会作为一个自然序列被询问——座席引导来电者按顺序填写每个子字段。复合组件的列表则成为一个循环:每完成一条记录,座席就会询问是否添加另一条,直到来电者完成或达到上限。记录的记录方式与网页提交完全相同。
模板
当你将一个使用复合组件的表单作为市场模板发布时,复合组件会随它一起嵌入。任何使用该模板的人都会收到他们自己自包含的克隆——已经发布、完全可编辑,并且独立于你的原件。
删除与恢复
删除复合组件是一次软删除:它会从选择器和你的库列表中消失,但已发布的表单仍可正常工作——它们的快照已包含被冻结的定义。可随时从复合组件页面恢复已删除的复合组件。复合组件被删除期间,新表单无法引用它。
API 访问(MCP)
NueForm MCP 服务器向 AI 助手开放完整的复合组件管理能力:list_composites、get_composite、create_composite、update_composite、publish_composite 和 delete_composite。同样适用工作副本/发布语义——update_composite 编辑草稿,而引用它的表单在调用 publish_composite 之前无法发布。请参阅 MCP 集成。
实际用例
**董事会成员与名册。**一家律师事务所的实体设立信息采集需要每位董事会成员的姓名、头衔和电子邮件。构建一个"董事会成员"复合组件,将其放入一个列表,客户就能按实际人数添加任意数量的成员。记录视图便成为一份跨事项的名册,包含提交过的每位董事会成员——可导出用于利益冲突核查。
**一个联系块,五十个表单。**市场部运营着数十个活动表单,全都索取相同的联系详情。有了一个"联系人"复合组件,合规变更(比如将全名拆分为名字和姓氏)只需做一次、发布,然后在每个表单下次发布时逐表单推出——无需在五十个构建器中翻找。
**活动宾客。**一个报名表单先索取报名者的详情,然后是一个"参会者"复合组件的列表("谁和你一起来?"),其上限与你的桌位数相匹配。将紧凑显示模式设置为姓名 · 餐食偏好可让长长的宾客名单一目了然;记录视图则为餐饮方提供一份包含所有活动表单中每位参会者的表格。
**供应商合规。**采购部从供应商处收集保险单:一个"保险单"复合组件(承保方、保单号、承保范围、到期日)放入一个列表,用于入驻、续约和审计表单。卡片显示模式让审阅者无需展开即可核对每份保单,而记录视图是一份包含在档每份保单的单一登记表——并可导出 CSV 用于审计。
**HR 申请。**一份工作申请使用一个"既往任职"复合组件(雇主、职位、起止日期)放入一个上限为五的列表,外加一个与单独的入职表单共享的"紧急联系人"复合组件。针对子字段既往任职 → 职位的逻辑会将资深候选人路由到额外的问题,而一条列表计数规则会标记没有工作经历的申请以供人工审核。
限制与须知
- 每个复合组件最多 30 个子问题;名称最多 120 个字符。
- 复合组件不能包含屏幕、组或其他复合组件,也不能通过列表引用自身。
- 无论你配置的上限是多少,列表都以 100 个项目为硬性上限。
- 内联画布编辑对复合组件的所有者可用;队友获得只读字段和复制后编辑。
- 发布复合组件本身永远不会改变已上线的表单——表单始终在表单发布时重新冻结复合组件版本。