* docs: add atomic migration instructions for v6 installation * Update docs/react/migration-v6.zh-CN.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: 遇见同学 <1875694521@qq.com> * Update docs/react/migration-v6.en-US.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: 遇见同学 <1875694521@qq.com> --------- Signed-off-by: 遇见同学 <1875694521@qq.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
14 KiB
group, order, title
| group | order | title | ||||
|---|---|---|---|---|---|---|
|
0 | 从 v5 到 v6 |
本文档将帮助你从 antd 5.x 版本升级到 antd 6.x 版本。本次升级为一次技术升级,虽然组件 API 保持兼容,但在升级前您需要确保您的环境满足新的要求。
升级准备
- 请先升级到 v5 最新版本,按照控制台 warning 信息处理已废弃 API。
- 确认项目可以运行在 React 18 及以上版本,v6 不再支持 React 17 及以下。
- v6 仅支持现代浏览器,并默认使用 CSS variables,因此不再支持 IE。
npm install --save antd@6
# 或
yarn add antd@6
# 或
pnpm add antd@6
v6 有哪些不兼容的变化
React 版本支持调整
antd@6要求 React 版本 >= 18,不再支持 React 17 及以下。- 不再需要
@ant-design/v5-patch-for-react-19来兼容 React 19,如果使用可以移除该依赖。
- import '@ant-design/v5-patch-for-react-19';
@ant-design/icons 版本升级
antd@6要求@ant-design/icons版本 >= 6.0.0。- ⚠️ 重要:
@ant-design/icons@6与antd@5不兼容,请确保同时升级两个包。 - 如果你的项目显式依赖
@ant-design/icons,需要同步升级到 v6 版本。
npm install --save @ant-design/icons@6
# 或
yarn add @ant-design/icons@6
# 或
pnpm add @ant-design/icons@6
如果你在升级过程中遇到构建错误,请检查 @ant-design/icons 版本是否与 antd 版本匹配。
DOM 调整
- v6 对大量组件的 DOM 结构进行了升级和优化,以提升可维护性和一致性。
- 对于大多数正常使用 antd 样式的项目,这不会产生影响。
- ⚠️ 如果你的项目中存在针对组件内部 DOM 节点的自定义样式(例如依赖特定选择器或层级结构),升级后可能需要手动检查并调整样式。
API 调整
⚠️ 下列 API 已被标记为废弃(Deprecated)。尽管这些属性当前仍可使用,但控制台会提示弃用警告,并将在 7.0 中被移除。为保持代码的可维护性和兼容性,建议尽快迁移到对应的替代属性。
-
AlertcloseText弃用,变为closable.closeIcon。message弃用,变为title。
-
AnchorAnchor children弃用,变为items。
-
AutoCompletedropdownMatchSelectWidth弃用,变为popupMatchSelectWidth。dropdownStyle弃用,变为styles.popup.root。dropdownClassName弃用,变为classNames.popup.root。popupClassName弃用,变为classNames.popup.root。dropdownRender弃用,变为popupRender。onDropdownVisibleChange弃用,变为onOpenChange。dataSource弃用,变为options。
-
Avatar.GroupmaxCount弃用,变为max={{ count: number }}。maxStyle弃用,变为max={{ style: CSSProperties }}。maxPopoverPlacement弃用,变为max={{ popover: PopoverProps }}。maxPopoverTrigger弃用,变为max={{ popover: PopoverProps }}。
-
BackTopBackTop弃用,变为FloatButton.BackTop。
-
Breadcrumbroutes弃用,变为items。Breadcrumb.Item和Breadcrumb.Separator弃用,变为items。
-
Button.GroupButton.Group弃用,变为Space.Compact。
-
ButtoniconPosition弃用,变为iconPlacement。
-
CalendardateFullCellRender弃用,变为fullCellRender。dateCellRender弃用,变为cellRender。monthFullCellRender弃用,变为fullCellRender。monthCellRender弃用,变为cellRender。
-
CardheadStyle弃用,变为styles.header。bodyStyle弃用,变为styles.body。bordered弃用,变为variant。
-
CarouseldotPosition弃用,变为dotPlacement。
-
CascaderdropdownClassName弃用,变为classNames.popup.root。dropdownStyle弃用,变为styles.popup.root。dropdownRender弃用,变为popupRender。dropdownMenuColumnStyle弃用,变为popupMenuColumnStyle。onDropdownVisibleChange弃用,变为onOpenChange。onPopupVisibleChange弃用,变为onOpenChange。bordered弃用,变为variant。
-
CollapsedestroyInactivePanel弃用,变为destroyOnHidden。expandIconPosition弃用,变为expandIconPlacement。
-
Collapse.Paneldisabled弃用,变为collapsible="disabled"。
-
ConfigProviderdropdownMatchSelectWidth弃用,变为popupMatchSelectWidth。
-
DatePicker.RangePickerdropdownClassName弃用,变为classNames.popup.root。popupClassName弃用,变为classNames.popup.root。popupStyle弃用,变为styles.popup.root。bordered弃用,变为variant。onSelect弃用,变为onCalendarChange。
-
DatePickerdropdownClassName弃用,变为classNames.popup.root。popupClassName弃用,变为classNames.popup.root。popupStyle弃用,变为styles.popup.root。bordered弃用,变为variant。onSelect弃用,变为onCalendarChange。
-
DescriptionslabelStyle弃用,变为styles.label。contentStyle弃用,变为styles.content。
-
Dividertype弃用,变为orientation。orientationMargin弃用,变为styles.content.margin。
-
DrawerheaderStyle弃用,变为styles.header。bodyStyle弃用,变为styles.body。footerStyle弃用,变为styles.footer。contentWrapperStyle弃用,变为styles.wrapper。maskStyle弃用,变为styles.mask。drawerStyle弃用,变为styles.section。destroyInactivePanel弃用,变为destroyOnHidden。width弃用,变为size。height弃用,变为size。
-
Dropdown.ButtonDropdown.Button弃用,变为Space.Compact + Dropdown + Button。
-
DropdowndropdownRender弃用,变为popupRender。destroyPopupOnHide弃用,变为destroyOnHidden。overlayClassName弃用,变为classNames.root。overlayStyle弃用,变为styles.root。placement: xxxCenter弃用,变为placement: xxx。
-
EmptyimageStyle弃用,变为styles.image。
-
FloatButtondescription弃用,变为content。
-
ImagewrapperStyle弃用,变为styles.root。visible弃用,变为open。onVisibleChange弃用,变为onOpenChange。maskClassName弃用,变为classNames.cover。rootClassName弃用,变为classNames.root。toolbarRender弃用,变为actionsRender。
-
Input.GroupInput.Group弃用,变为Space.Compact。
-
InputNumberbordered弃用,变为variant。addonAfter弃用,变为Space.Compact。addonBefore弃用,变为Space.Compact。
-
MentionsMentions.Option弃用,变为options。
-
Menuchildren弃用,变为items。
-
ModalbodyStyle弃用,变为styles.body。maskStyle弃用,变为styles.mask。destroyOnClose弃用,变为destroyOnHidden。
-
Notificationbtn弃用,变为actions。message弃用,变为title。
-
ProgressstrokeWidth弃用,变为size。width弃用,变为size。trailColor弃用,变为railColor。gapPosition弃用,变为gapPlacement。
-
SelectdropdownMatchSelectWidth弃用,变为popupMatchSelectWidth。dropdownStyle弃用,变为styles.popup.root。dropdownClassName弃用,变为classNames.popup.root。popupClassName弃用,变为classNames.popup.root。dropdownRender弃用,变为popupRender。onDropdownVisibleChange弃用,变为onOpenChange。bordered弃用,变为variant。
-
SlidertooltipPrefixCls弃用,变为tooltip.prefixCls。getTooltipPopupContainer弃用,变为tooltip.getPopupContainer。tipFormatter弃用,变为tooltip.formatter。tooltipPlacement弃用,变为tooltip.placement。tooltipVisible弃用,变为tooltip.open。
-
Space.Compactdirection弃用,变为orientation。
-
Spacedirection弃用,变为orientation。split弃用,变为separator。
-
Splitterlayout弃用,变为orientation。
-
Countdown<Statistic.Countdown />弃用,变为<Statistic.Timer type="countdown" />。
-
StatisticvalueStyle弃用,变为styles.content。
-
StepslabelPlacement弃用,变为titlePlacement。progressDot弃用,变为type="dot"。direction弃用,变为orientation。items.description弃用,变为items.content。
-
Tablepagination.position弃用,变为pagination.placement。onSelectInvert弃用,变为onChange。filterDropdownOpen弃用,变为filterDropdownProps.open。onFilterDropdownOpenChange弃用,变为filterDropdownProps.onOpenChange。filterCheckall弃用,变为locale.filterCheckAll。
-
TabspopupClassName弃用,变为classNames.popup。tabPosition弃用,变为tabPlacement。destroyInactiveTabPane弃用,变为destroyOnHidden。Tabs.TabPane弃用,变为items。
-
Tagbordered={false}弃用,变为variant="filled"。color="xxx-inverse"弃用,变为variant="solid"。
-
TimePickeraddon弃用,变为renderExtraFooter。
-
TimelineTimeline.Item弃用,变为items。pending弃用,变为items。pendingDot弃用,变为items。mode=left|right弃用,变为mode=start|end。
-
TooltipoverlayStyle弃用,变为styles.root。overlayInnerStyle弃用,变为styles.container。overlayClassName弃用,变为classNames.root。destroyTooltipOnHide弃用,变为destroyOnHidden。
-
TransferlistStyle弃用,变为styles.section。operationStyle弃用,变为styles.actions。operations弃用,变为actions。
-
TreeSelectdropdownMatchSelectWidth弃用,变为popupMatchSelectWidth。dropdownStyle弃用,变为styles.popup.root。dropdownClassName弃用,变为classNames.popup.root。popupClassName弃用,变为classNames.popup.root。dropdownRender弃用,变为popupRender。onDropdownVisibleChange弃用,变为onOpenChange。bordered弃用,变为variant。
弹层类组件(Modal、Drawer 等)
- 新增
mask蒙层功能,并支持模糊效果。 - 默认开启,可通过以下方式关闭模糊:
import { ConfigProvider, Drawer, Modal } from 'antd';
export default () => (
<ConfigProvider
modal={{
mask: {
blur: false,
},
}}
drawer={{
mask: {
blur: false,
},
}}
>
<Modal />
<Drawer />
</ConfigProvider>
);
Tag margin 调整
v6 移除了 Tag 组件末尾的默认外边距(以前 Tag 末尾会额外留出一段 margin-inline-end)。如果你的布局或自定义样式依赖这一行为,请使用 ConfigProvider 的 tag.styles 进行补充:
import { ConfigProvider, Tag } from 'antd';
export default () => (
<ConfigProvider
tag={{
styles: {
root: {
marginInlineEnd: 8,
},
},
}}
>
<Tag>Tag A</Tag>
<Tag>Tag B</Tag>
<Tag>Tag C</Tag>
</ConfigProvider>
);
Form onFinish 取值不再包含 Form.List 全部数据
v5 版本中,Form.List 会被认为是一个 Field,以至于提交时会包含 Form.List 下的所有数据结构即便其子元素的 Form.Item 没有注册过。在 v6 中,Form.List 不再包含未注册的子项数据。因而你不再需要通过 getFieldsValue({ strict: true }) 来过滤未注册字段。
const onFinish = (values) => {
-- const realValues = getFieldsValue({ strict: true });
++ const realValues = values;
// ...
}
<Form onFinish={onFinish} />
浏览器支持调整
- 默认开启 CSS variables,仅支持现代浏览器。
- IE 浏览器不再支持,部分旧版国产浏览器可能存在兼容性问题,请在应用发布前确认目标浏览器的支持情况。
原子级通过别名安装 v6
- 如果你需要控制升级的影响范围,可以尝试原子级迁移方案。请注意,这并非我们推荐的升级路径。
升级影响排查 Checklist
为了确保升级到 v6 后项目正常运行,请参考以下检查清单逐项确认:
- React 版本:确认项目使用的 React 版本 >= 18,并且不再引入
@ant-design/v5-patch-for-react-19。 - @ant-design/icons 版本:确认
@ant-design/icons版本已升级到 >= 6.0.0,与antd@6匹配。 - 浏览器兼容性:确认目标用户浏览器均为现代浏览器,且支持 CSS variables。
- 自定义样式检查:如果有针对组件内部 DOM 节点的 CSS 定制,验证在 v6 下是否依然生效。
- 弹层蒙层配置:Modal、Drawer 等弹层是否需要关闭
mask的模糊效果,如不需要可保持默认。 - 构建工具配置:确认升级后构建无报错,CSS 变量和 CSS-in-JS 能正常工作。
- 控制台 warning:运行应用并观察控制台,处理所有
legacy API的提示。
遇到问题
如果您在升级过程中遇到问题,请到 GitHub issues 进行反馈。我们会尽快响应并在文档中完善相关说明。