antdv5介绍
https://next.ant.design/components/button-cn
设计系统,应该考虑约束和自由的平衡,保持底层基础设施的一致性和高效率
不希望开发者对细节样式进行过多修改,让设计成为一种敏捷、简单的企业级产品
提供相关组件以使其在 LowCode 上易于使用
三大设计原则
- 更聚焦
- 去干扰
- 轻松感
antd v5新特性
- moment替换为 dayjs
- 基于 Design Token 和 CSS-in-JS 定制主题方案
- 全局主题定制
- 局部主题
- 嵌套主题
- 多主题并行
- 组件主题定制
- 增加了基础圆角的大小
- 移除 babel-plugin-import
- 交互动画速度,交互体验更加流畅
antdv5 新增组件
- Tour 漫游式引导,引导用户认识新的特性并学习新功能
- QrCode 二维码
- WaterMark 水印
- FloatButton 悬浮按钮
- Progress
PageHeader
antd 删除了PageHeader,从 pro-components 中获取
- import type { PageHeaderProps } from 'antd';
- import { PageHeader } from 'antd';
+ import type { PageHeaderProps } from '@ant-design/pro-components';
+ import { PageHeader } from '@ant-design/pro-components';
Space
按钮组分隔符,代替 Divider
import { Divider, Space, Typography } from 'antd';
const { Link } = Typography;
const App: React.FC = () => (
<Space split={<Divider type="vertical" />}>
<Link>Link</Link>
<Link>Link</Link>
<Link>Link</Link>
</Space>
);
Space.Compact
https://github.com/ant-design/ant-design/discussions/37521
http://ant-design.antgroup.com/components/space-cn/#components-space-demo-compact-nested
Space.Compact 代替 Button.Group
新增 Space.Compact 组件,表示一个紧凑排列的组,
支持将表单类组件(如 Input、Select、Button)进行成组包裹,
逐步废弃和替换原 Input.Group 和 Button.Group 的用法
- 目前 Input.Group 和 Button.Group 在一定程度上存在功能重复的情况
- Input.Group 可用于包括 Select 等其他表单组件,该 API namespace 挂在 Input 上表意不清
- v5 中正式移除 Button.Group
- v6 中将正式移除 Input.Group API
- 通过 Space.Compact 组件,支持原 Input.Group 和 Button.Group 等表单类组件的成组效果
- 替换 Dropdown.Button 和 ```tsx import { Button, Menu, Dropdown, Space, Tooltip } from ‘antd’; import { DownloadOutlined, EllipsisOutlined } from ‘@ant-design/icons’;
const App: React.FC = () => (
<Tooltip title="Tooltip">
<Button icon={<DownloadOutlined />} disabled />
</Tooltip>
<Dropdown
placement="bottomRight"
overlay={
<Menu
items={[
{
key: '1',
label: '1st item',
},
{
key: '2',
label: '2nd item',
},
{
key: '3',
label: '3rd item',
},
]}
/>
}
trigger={['click']}
>
<Button type="primary" icon={<EllipsisOutlined />} />
</Dropdown>
</Space.Compact>
);
// 输入框组合
// 设置 tooltip的宽度
<a name="lqA2N"></a>
### FloatButton
FloatButton 右下角浮动按钮<br />[https://github.com/ant-design/ant-design/discussions/37406](https://github.com/ant-design/ant-design/discussions/37406)
<a name="xdCRJ"></a>
### dayjs
- import moment from ‘moment’;
- import dayjs from ‘dayjs’;
- moment.isMoment(text);
- dayjs.isDayjs(text);
// next
- moment(text).fromNow()
- import relativeTime from ‘dayjs/plugin/relativeTime’;
- dayjs.extend(relativeTime);
- dayjs(text).fromNow() ```
picker
https://github.com/react-component/picker
ts导出默认属性
import { Table } from 'antd';
type Props<T extends (...args: any) => any> = Parameters<T>[0];
type TableProps = Props<typeof Table<{ key: string; name: string; age: number }>>;
type DataSource = TableProps['dataSource'];
theme
const theme = require('@ant-design/antd-theme-variable');
umi
theme: {
'@ant-prefix': 'ant',
+ ...theme,
'@s-site-menu-width': '258px',
'@root-entry-name': 'variable',
'@border-radius-base': '4px',
'@primary-color': '#1677FF',
'@error-color': '#ff4d4',
'@info-color': '#52c41a',
'@warning-color': '#faad14',
},
webpack
{
loader: "less-loader",
options: {
lessOptions: {
javascriptEnabled: true,
+ modifyVars: { ...theme, "@warning-color": "#faad14" },
},
},
};
组件属性修改
open代替 visible
open属性,v4.23.0 之前是 visible,之后修改为 open
- open = 键盘按4下
- visible = 键盘按7下
- 开发少打3个字,单输出提升43%开发速度
antd5 工具辅助
- 主题编辑器
- 组件支持复制粘贴到 Sketch
- V4 迁移至 V5 的 codemod 工具
- 如何在一个项目内同时兼容 v3版本 和 v4版本?
- 旧版如果不发版,不维护,是否可以考虑 webpack externals 方式,引入一个 antd.min.js
- 对于大系统,多一个 min.js 也是可以接受的,毕竟有缓存后再也不会请求,对于小页面,也没有升级负担。不需要兼容方式
- 多版本 antd 对 bundle size 不友好
- antd 本身对 global 是有一些依赖,比如说 Modal 多版本弹窗那滚动条其实就同步不了。所以还是在一个包的上下文会更兼容。
- 如何在一个项目内同时兼容 v3版本 和 v4版本?