11月22日,Ant Design 正式发布 6.0 版本。
作为一个走过10年的开源项目,这次升级相比5.0来说更加「克制」——没有翻天覆地的API重构,而是聚焦在技术架构的深度优化上。
让我们来看看这次升级到底值不值得跟进,以及背后的技术取舍。
变化:
Modal.confirm 不再需要额外的兼容代码实际意义:这是一次技术债的清理。React 18 引入的并发特性和新 Hooks(如 useId)已经成为现代 React 应用的基础设施。移除旧版本兼容代码后,内部实现更加统一,避免了不同版本间的行为差异。
对你的影响:
@ant-design/v5-patch-for-react-19)变化:
zeroRuntime 模式,实现零运行时样式生成技术背景:Ant Design 5.0 时期引入了 CSS-in-JS,但同时带来了运行时性能开销。6.0 通过 CSS 变量实现了一个巧妙的平衡:
@ant-design/static-style-extract 可以提前生成静态样式性能数据:官方提供的基准测试显示,zeroRuntime 模式性能最优,尤其在多主题场景下优势明显。
实际应用场景:
// 启用零运行时模式
<ConfigProvider theme={{ zeroRuntime: true }}>
<App />
</ConfigProvider>
// 获取 CSS 变量名
const { cssVar: { colorBgElevated } } = theme.useToken();
注意事项:
useId 生成zeroRuntime 模式需要自己导入样式文件变化:
start/end 替代 left/right)ConfigProvider 的 classNames 和 styles 统一配置组件内部结构实际用途:这是给「定制化需求」打开的一扇门。以前要修改组件内部样式,要么覆盖全局 CSS,要么用 !important 硬怼。现在可以优雅地通过 classNames 精确控制每个部分:
// 创意按钮
<Button
classNames={{
root: 'rounded-tr-xl rounded-bl-xl',
icon: 'rotate-30',
}}
icon={<SmileOutlined />}
>
Ant Design
</Button>
// 赛博朋克风格卡片
<Card
title="Hello World"
classNames={{
root: "bg-green-300/10 text-green-500 border-green-500 rounded-none",
header: "border-green-500 [box-shadow:inset_0_0_8px_theme(colors.green.500)]",
body: "[text-shadow:0_0_8px_theme(colors.green.400)]"
}}
>
Ant Design loves you!~ (=^・ω・^)
</Card>
配合 Tailwind CSS 的威力:文档中的示例大量使用了 Tailwind 的 utility classes,这意味着你可以在不写额外 CSS 的情况下,快速实现各种定制效果。
函数式配置的想象空间:
const btnClassNames: ButtonProps['classNames'] = ({ props }) => {
switch (props.type) {
case 'primary':
return { root: 'shadow-lg' };
default:
return { root: 'shadow-sm' };
}
};
<ConfigProvider button={{ classNames: btnClassNames }}>
<App />
</ConfigProvider>
变化:
antd.js 和 antd.min.js 中启用了 React Compiler技术解读:React Compiler 是 React 19 引入的编译器,能够自动优化组件的 re-render。Ant Design 在打包产物中预编译,意味着即使你的项目还在用 React 18,也能享受到部分性能优化。
注意:这是预编译到库中的优化,不是让你在项目中开启 React Compiler。如果你想在自己的项目中开启,需要单独配置。
变化:
findDOMNode 相关兼容逻辑实际影响:如果你是从 v5 升级,这部分几乎不需要关心。但如果项目中还在用 v4 的老 API,升级前需要先处理 deprecation warnings。
适用于图片画廊、卡片流等场景,终于不用自己手写或引入第三方库了。
可以在多个 tooltip 内容之间平移和滑动,改善了密集信息展示的用户体验。
提供了常见的按钮布局样式,让数字输入更加直观。
用户可以拖拽调整 Drawer 的宽度,适合需要灵活空间的场景。
所有浮层默认使用模糊效果,可通过 mask: { blur: false } 关闭。这个细节能显著提升视觉体验。
v5.x-stableAnt Design 6.0 的升级策略其实很聪明:
但也有一些权衡:
classNames 结构不够清晰直接上 6.0,没什么好犹豫的。React 19 + Ant Design 6.0 + CSS 变量,是目前性能最优的组合。
根据项目情况评估:
如果还在 React 17,先评估升级 React 的成本。如果 React 升级成本太高,v5 还会维护一年,不必强求。
Ant Design 6.0 是一次务实的技术升级。 它没有追求表面的「大更新」,而是扎实地解决了性能、可定制性和未来兼容性的问题。
对于前端开发者来说,这次升级最大的价值在于:
是否升级,取决于你的项目状态和团队情况。但如果你问我:「6.0 是个好版本吗?」我的答案是:「是的,它解决了真问题。」
相关参考:
PS: Ant Design X 也同步发布了 2.0 版本,专注 AI 场景的组件库。如果你在做 AI 相关的产品,值得关注。
🔥号外~号外~
最近我们推出了大厂的一手面经模块,都是刚面完的小伙伴们热乎乎分享的:
这些面经都是花了不少心思整理的,比网上那些过时的八股文靠谱多了。
有需要的小伙伴可以点击这里👉前端面试题宝典(打开小程序,首页即可直接领取【大厂真实面经】),也可直接联系小助理咨询。
毕竟信息差就是竞争力,早点了解面试套路,早点拿到心仪offer!
有会员购买、辅导咨询的小伙伴,可以通过下面的二维码,联系我们的小助手。