Skip to content

refactor(antd6): clear residual v6 deprecations - #61

Merged
magicapple123 merged 2 commits into
mainfrom
feat/antd6-residual
Oct 2, 2026
Merged

magicapple123 merged 2 commits into
mainfrom
feat/antd6-residual

Conversation

@magicapple123

Copy link
Copy Markdown
Owner

背景

#53 迁移 antd 6 时搁置的残余弃用清理。基于 antd 6.6.5 源码核实,运行时存在三类 deprecated 警告(devUseWarning 实证):

弃用 API 运行时警告 v6 替代(官方文档)
List / List.Item / List.Item.Meta The List component is deprecated…please use Listy instead Listy(≥6.6.0)+ 迁移 FAQ
Input/InputNumber addonAfter/addonBefore deprecated: addonAfter, please use Space.Compact instead Space.Compact + Space.Addon(官方 "Compact Style" / "Search box" 示例)
Dropdown.Button deprecated: Dropdown.Button, please use Space.Compact + Dropdown + Button Space.Compact + Dropdown + Button(官方 "Button with dropdown menu" 示例)

改动清单

1. List → Listy(22 个文件 / 30 处)

  • dataSource → items、renderItem → itemRender,并补上 Listy 必需的显式 rowKey(rc-listy 的 useItemKey 对 undefined rowKey 会得到 item[undefined],产生重复 key)。
  • List.Item / List.Item.Meta / actions:按官方 FAQ「preset structures 在 itemRender 内以普通 JSX 重组」:
    • 新增共享组件 frontend/src/components/common/ListyItem.tsx(主内容 + 右侧 actions 的 flex 行布局,覆盖原 List.Item 的 onClick / className / style / aria-label 场景);
    • ListyMeta 覆盖 Meta 的 avatar / title / description;
    • 行内边距常量 listyPadding.ts 按 antd token 数值还原 List 默认(12/0)与 size="small"(8/16)的密度。
  • loading → 内容外层 <Spin spinning>(与原 List 内部 <Spin {...loadingProp}> 结构等价);locale.emptyText → 条件渲染 Empty;bordered → 语义 styles.root 边框 + borderRadiusLG(token 取值);itemLayout="horizontal"(默认值)与 style maxHeight+overflowY → Listy 原生 height。
  • ConversationSidebar 侧栏 CSS 同步:.ant-list-item → .ant-listy-item,「当前对话」高亮经 :has(.is-active) 作用到行外壳(jsdom 不验样式,仅视觉层)。

涉及文件:InterviewExperiencePanel、InterviewReviewPanel、JobAnalysisModal、JobMatchBatchPanel、ReferralPanel、ReminderPanel、ResumeSuggestionsModal、GeneralResumeSection、DatasetsCard、LLMConfigCard、LLMConfigRecordsCard、NavigationSettingsCard、SkillsCard、CalendarView、WebFormPendingPanel、ConversationSidebar、DrillPage、HomePage、InterviewPage。

2. addonAfter/addonBefore → Space.Compact(3 处)

  • SearchCard:InputNumber addonAfter="条" → Space.Compact + Space.Addon。
  • WebFormMemoryDialog:Input addonBefore="字段名称" → Space.Compact block + Space.Addon(textbox 数量与顺序不变)。
  • LLMConfigCard:模型名称输入框的「获取可用模型」按钮原来靠 addonAfter 同时保住 value 绑定与 label↔input 关联(原注释记录了这一约束)。改为:外层无 name 的 Form.Item(label/tooltip/htmlFor)+ 内层 noStyle Form.Item(把 id="model" 与 value 注回输入框)+ Space.Compact block。SettingsPage.test 的 getByLabelText("模型名称") 继续通过。

3. Dropdown.Button → Space.Compact + Dropdown + Button(1 处)

  • JobsPage「AI 分析适配度」:主按钮 onClick、右键按钮 RobotOutlined 图标、disabled 联动、默认 hover 触发与 bottomRight placement(Dropdown.Button 内部默认值)全部保持。

4. 测试适配(逐条说明,断言未放松)

  • GeneralResumeSection.test.tsx:title.closest("li") → title.closest(".ant-listy-item")。原断言用行外壳元素限定「通用简历 / 求职意向」的查找作用域;Listy 的行外壳由 <li> 变为 .ant-listy-item(div),作用域语义不变。其余 800 个用例零改动通过。

验证

  • vitest run:123 文件 / 801 用例全绿
  • eslint .:0 error / 11 warning(存量基线,无新增)
  • tsc --noEmit:通过
  • rolldown-vite build:通过(32.97s)
  • vite dev 冒烟:通过(5199 端口,迁移页面模块均 200)

antd 6.6.5 在运行时对三类 API 发出 deprecated 警告,本次全部清除:

- List → Listy(22 个文件 / 30 处):dataSource→items、renderItem→itemRender、
  显式 rowKey;List.Item / List.Item.Meta / actions 按 v6 迁移指引在 itemRender
  内以普通 JSX 重组(新增共享组件 ListyItem / ListyMeta,行内边距常量见
  listyPadding.ts,按 token 还原 List 默认 12/0 与 small 8/16 的密度);
  loading 以内容外层 Spin 等价还原;locale.emptyText 改为条件渲染 Empty;
  bordered 以语义 styles 还原;ConversationSidebar 的行样式选择器同步改为
  .ant-listy-item(is-active 高亮经 :has() 作用于行外壳)。
- InputNumber/Input addonAfter/addonBefore → Space.Compact + Space.Addon
  (SearchCard、WebFormMemoryDialog);LLMConfigCard 的「获取可用模型」按钮
  拆为外层无 name Form.Item + 内层 noStyle Form.Item + htmlFor,保持
  label↔input 关联(SettingsPage 测试 getByLabelText("模型名称") 依赖它)。
- Dropdown.Button → Space.Compact + Button + Dropdown(JobsPage,placement
  保持 Dropdown.Button 默认的 bottomRight)。

测试:GeneralResumeSection 用例行作用域选择器 closest("li") 同步改为
closest(".ant-listy-item")(Listy 行外壳为 div,作用域语义不变,断言未放松)。

验证:vitest 801/801 通过(123 文件);eslint 0 error / 11 warning(基线);
tsc --noEmit 通过;rolldown-vite build 通过;vite dev 冒烟通过。
@magicapple123
magicapple123 merged commit 7a8b750 into main Oct 2, 2026
10 checks passed
@magicapple123
magicapple123 deleted the feat/antd6-residual branch October 2, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant