观察类发现,顺手记录,发现于 #3838 的实施(PR #3894 )。不在那一单的范围内,该 PR 未改这个行为。
机制
packages/plugin-detail/src/RelatedList.tsx 里 Add 这条链上的三个消费点对 dataSource 的要求不一致(行号按 PR #3894 之后的树):
:1147 Add 按钮:{add && pickerObject && ( —— 不判 dataSource ,点击只做 setPickerOpen(true);
:1325 picker 对话框:{add && pickerObject && dataSource && ( —— 判 dataSource ;
:723 handleAddRecords:if (!add || !dataSource || …) return —— 判。
于是当宿主没有 dataSource 时,按钮照常渲染,点下去 pickerOpen 变 true 而对话框根本不存在:没有任何可见反应,也没有任何提示 。
可达性
renderers/record-related-list.tsx:185 传的是 dataSource={ctx?.dataSource},所以 undefined 的宿主是真实存在的一类:Studio designer 预览、无 RecordContext 的独立嵌入(apps/console/src/__tests__/public-block-binding-reach.test.tsx 正是这样挂载的,且它的 fixture 带一个 spec 合法的 add)。正常应用运行时 dataSource 有值,所以终端用户日常不会碰到 —— 这也是标 finding 而不是 bug/pm:queue 的原因,严重性交 triage 判。
可能的方向(未做取舍)
按钮门补上 dataSource(与对话框/回调对齐)—— 最小、与 record:related_list 写了 add 但漏了 add.picker,整个相关列表被换成「Component failed to render」错误卡 —— RelatedList.tsx:1299 裸取 add.picker.object,同一文件 :378/:390 是可选链 #3838 收紧门的思路同向:能力不具备就不呈现 affordance;
无 dataSource 时按钮 disabled 并给出原因(designer 里"这里会有一个 Add 按钮"的可见性比直接消失更有用);
不动,认为 designer 预览下的死按钮可接受。
(1) 与 (2) 的取舍取决于 designer 预览想不想看见这个按钮 —— 那是产品判断,不是实现细节,所以只记录不动手。
关联:#3838 (同一条 Add 链上的门,已修渲染期崩溃)、#3831 (add.picker.filter 未接线)
观察类发现,顺手记录,发现于 #3838 的实施(PR #3894)。不在那一单的范围内,该 PR 未改这个行为。
机制
packages/plugin-detail/src/RelatedList.tsx里 Add 这条链上的三个消费点对dataSource的要求不一致(行号按 PR #3894 之后的树)::1147Add 按钮:{add && pickerObject && (—— 不判dataSource,点击只做setPickerOpen(true);:1325picker 对话框:{add && pickerObject && dataSource && (—— 判dataSource;:723handleAddRecords:if (!add || !dataSource || …) return—— 判。于是当宿主没有
dataSource时,按钮照常渲染,点下去pickerOpen变 true 而对话框根本不存在:没有任何可见反应,也没有任何提示。可达性
renderers/record-related-list.tsx:185传的是dataSource={ctx?.dataSource},所以undefined的宿主是真实存在的一类:Studio designer 预览、无RecordContext的独立嵌入(apps/console/src/__tests__/public-block-binding-reach.test.tsx正是这样挂载的,且它的 fixture 带一个 spec 合法的add)。正常应用运行时dataSource有值,所以终端用户日常不会碰到 —— 这也是标finding而不是bug/pm:queue的原因,严重性交 triage 判。可能的方向(未做取舍)
dataSource(与对话框/回调对齐)—— 最小、与record:related_list写了add但漏了add.picker,整个相关列表被换成「Component failed to render」错误卡 ——RelatedList.tsx:1299裸取add.picker.object,同一文件:378/:390是可选链 #3838 收紧门的思路同向:能力不具备就不呈现 affordance;dataSource时按钮disabled并给出原因(designer 里"这里会有一个 Add 按钮"的可见性比直接消失更有用);(1) 与 (2) 的取舍取决于 designer 预览想不想看见这个按钮 —— 那是产品判断,不是实现细节,所以只记录不动手。
关联:#3838(同一条 Add 链上的门,已修渲染期崩溃)、#3831(
add.picker.filter未接线)