Skip to content

div 的废弃警告会对 kind: 'html' tier 自己解析出的节点开火 —— 作者无法消除,且意味着 div 结构上退不掉 #4000

Description

@yinlianghui

发现于 #3965 的实施(PR #3998),不在该 PR 处理 —— 那一单改的是警告的去重和 catalog 内容,这一条是废弃本身的作用域问题。

现象

kind: 'html' 作者面(ADR-0080)把 JSX 标签名原样当成组件 type:

  • packages/sdui-parser/src/parse.ts:85 —— const node: SchemaElement = { type: tag, ...props }
  • packages/sdui-parser/src/index.ts:33 —— const allowedTags = new Set(Object.keys(manifest.components))
  • packages/components/src/renderers/layout/page.tsx:438-470 —— 白名单来自 ComponentRegistry.getKnownTypes(),裸 div 在内(所以 div 标签是合法的)
  • packages/components/src/renderers/basic/html-elements.tsx:15,36 —— 该模块的 TAGS 列表故意排除 div,注释写明「div / span / table / code / label 和语义分节标签已在别处注册」

于是一个 kind: 'html' 页面里写一个 div 标签 —— 完全合法、有意支持的写法 —— 编译出的就是 { "type": "div" },落到 basic/div.tsx 的废弃渲染器上,dev 构建下报一条「The div component is deprecated, use card / flex / container / stack / grid instead」。

作者对此无能为力:那几个替代类型没有一个是 html tier 里能写的等价标签,而且这条建议本身是给 JSON 作者面的。同族的 span 同理(basic/span.tsx)。

为什么归为 observation-class

参考位置

关联:#3965 / PR #3998(发现于此)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions