【NocoBase V2.0.30 字段联动 Bug 反馈】子表内字段联动触发的重渲染,会覆盖主表的子表隐藏状态,导致隐藏子表异常显示

一、问题概述

NocoBase V2.0.30 中,当主表配置了「隐藏所有子表」的字段联动规则,子表内配置了字段联动(无论 JS 赋值还是原生字段赋值)时,快速连续输入子表内的数字字段,会触发子表独立重渲染,完全覆盖主表设置的子表隐藏状态,导致原本被隐藏的其他子表全部异常显示


二、环境信息

  • NocoBase 版本:V2.0.30
  • 部署方式:Docker(通用场景)
  • 浏览器:Chrome / Edge 最新版(多浏览器均复现)

三、100% 复现步骤

  1. 创建一个主表,添加多个子表组件(如子表 A、子表 B、子表 C)
  2. 在主表的「字段联动规则」中,配置一条置顶规则
  • 条件:恒成立(如「当前记录 ID 不为空」,确保表单加载即执行)
  • 动作:隐藏所有子表(A、B、C 全部勾选)
  1. 给其中一个子表(如子表 A)配置字段联动:
  • 条件:子表 A 内的「金额」数字字段 不为空
  • 动作:字段赋值,将「金额」字段的值赋值给子表 A 内的「大写人民币」文本字段(无论使用原生赋值还是自定义 JS 代码赋值,均会触发
  1. 保存表单配置,进入表单编辑页面
  2. 操作测试:
  • 单字符输入子表 A 的「金额」字段:其他子表(B、C)保持隐藏,符合预期
  • 快速连续输入 2 个及以上数字(如连续输入「12」):原本被隐藏的子表 B、C 全部异常显示,主表的隐藏规则完全失效

四、关键现象与验证(排除无关因素)

  1. 与 JS 代码完全无关:即使将子表联动的赋值方式改为原生「字段赋值」(无任何自定义 JS),该问题依然 100% 复现
  2. 与事件流、CSS 等无关:关闭所有事件流、无自定义 CSS,仅保留主表隐藏联动 + 子表字段联动,问题依然存在
  3. 触发源明确:通过浏览器控制台日志可见,连续输入时会触发大量子表独立的 beforeRender / formValuesChange 事件,主表的隐藏联动规则未被触发,子表重渲染时直接恢复为设计时的默认显示状态,覆盖主表的隐藏状态
  4. 输入频率是关键:单字符输入(无连续触发)正常,连续输入(连续触发子表重渲染)必现问题

五、根因分析(用户侧可验证结论)

  1. 主表的「子表隐藏」联动规则,仅在主表字段变更时触发,子表内的字段变更不会触发主表联动执行
  2. 子表内的任何字段联动(无论原生还是 JS),每一次字段值变更都会触发子表独立重渲染
  3. 子表独立重渲染时,完全无视主表之前设置的子表隐藏状态,直接恢复子表在表单设计时的默认显示状态(即显示)
  4. 快速连续输入数字时,子表字段连续多次变更,触发连续多次子表独立重渲染,主表隐藏规则全程无机会执行,最终导致所有隐藏子表全部显示

请问 子表 ABC都是隐藏的 ,子表A怎么录入数据 ?

请在demo环境中复现下这个问题
https://a_8hwne7u84ho.v13.demo.nocobase.com/admin/ (NocoBase 默认账户密码)

复现地址:https://a_8hwne7u84ho.v13.demo.nocobase.com/admin/3g46x6dma1k/view/151907c3df8/filterbytk/355252068024320/view/4c808b5b849/filterbytk/355252068024320
先把配置模式关闭,请在点击表格中222的查看-》在222的详情中点击编辑-》然后在测试三表的A表单框中快速输入数字,隐藏的另一个子表单就会显示出来

你好 ,确认是缺陷, 等我们修复下 。
建议不使用关系字段的联动规则 。