时间:2023-04-21 02:18:02 | 来源:网站运营
时间:2023-04-21 02:18:02 来源:网站运营
Ant Design 4.0 正式版来了!:4.0 rc
版本。经过 1 个多月的反馈收集和调整之后,我们终于迎来了 4.0 的正式版!感谢在此期间每一位提供反馈、建议以及贡献的人。我们会结合 rc
版本已经涉及的更新以及一些比较重要的新增内容于此进行列举。完整的更新文档可以点击此处。v4 文档地址:https://ant.design3.x-stable
分支并进入维护状态。我们仍然会为 v3 版本进行半年的维护工作。维护截止日期为 2020 年 5 月。4px
调整为 2px
。中后台产品以效率为第一优先级,圆角样式作为 UI 上的重要细节,更小的圆角从视觉上减少界面细节,提升了信息阅读效率。此外,我们对阴影进行了调整,使其更符合真实阴影,也同时将信息层级更好体现。antd@3.9.0
中,我们引入了 svg 图标(为何使用 svg 图标?)。使用了字符串命名的图标 API 无法做到按需加载,因而全量引入了 svg 图标文件,这大大增加了打包产物的尺寸。在 4.0 中,我们调整了图标的使用 API 从而支持 tree shaking,减少 antd 默认包体积约 150 KB(Gzipped)。import { Icon, Button } from 'antd';const Demo = () => ( <div> <Icon type="smile" /> <Button icon="smile" /> </div>);
4.0 中会采用按需引入的方式:import { Button } from 'antd';// tree-shaking supported- import { Icon } from 'antd';+ import { SmileOutlined } from '@ant-design/icons'; const Demo = () => ( <div>- <Icon type="smile" />+ <SmileOutlined /> <Button icon={<SmileOutlined />} /> </div> ); // or directly import import SmileOutlined from '@ant-design/icons/SmileOutlined';
此外,我们也对相关依赖进行了精简,从而降低打包尺寸(Gzipped):Form.create
的 HOC 方式获得表单实例,而通过 form.getFieldDecorator
来对组件进行数据绑定。此外,每次数据变更便会进行整个表单的重新渲染,这使得在大数据表单中性能堪忧。在 v4 版本中,Form 将自带表单实例,你可以直接通过 Form.Item 的 name
属性进行数据绑定,从而简化你的代码:- const { form } = this.props;- const onSubmit = () => {- form.validateFields((err, values) => {- if (!err) {- console.log('Received values of form: ', values);- }- });- };+ const onFinish = (values) => {+ console.log('Received values of form: ', values);+ };- <Form onSubmit={onSubmit}>+ <Form onFinish={onFinish}>- <Form.Item>+ <Form.Item name="username">- {getFieldDecorator('username')(- <Input />,- )}+ <Input /> </Form.Item> </Form>
我们发现大多数场景下,开发者其实只关注表单提交成功的值。因而我们提供了 onFinish
,其只会在表单验证通过后触发,而 validateFields
不在需要。Form.useForm
允许你对表单示例进行控制:const [form] = Form.useForm();React.useEffect(() => { form.setFieldValues({ ... });});<Form form={form} />
同时,我们提供了 Form.List 组件,使你可以非常方便的实现列表字段的控制:<Form.List name="names"> {(fields, { add, remove }) => ( <div> {fields.map(field) => <Form.Item {...field}><Input /></Form.Item>} <Button onClick={() => add(initialValue)}>Add</Button> </div> }</Form.List>
sticky
样式进行固定列的实现,因而大大减少了表格拥有固定列时的性能消耗。而对于不支持 sticky
的 IE 11,我们采取降级处理。summary
API 用于实现总结行的效果:fixedColumn
、expandable
、scroll
可以混合使用。提供了 body
API 用于自定义表格内容实现,你可以由此实现诸如虚拟滚动的效果。moment
进行解耦。你可以通过我们提供的 generate
方法生成自定义日期库的 Picker 组件。为了保持兼容,默认的 Picker 组件仍然使用 moment
作为日期库。自定义日期库请参考此处。picker
属性进行设置,不再需要通过 mode
的受控方法来实现特地的选择器:<RangePicker /><RangePicker showTime /><RangePicker picker="week" /><RangePicker picker="month" /><RangePicker picker="year" />
在范围选择器上,我们也对交互进行了优化。你现在可以单独的选择开始或结束时间,并且完美优化了手动输入日期的体验。Modal.xxx
和 Notification.xxx
调用方法无法获得 Context 的问题。这是由于我们对于这些语法糖会额外通过 ReactDOM.render
创建一个 React 实例,这也导致了 context 丢失的问题。在新版中,我们提供了 hooks 方法,让你可以将节点注入到需要获得 context 的地方:const [api, contextHolder] = notification.useNotification();return ( <Context1.Provider value="Ant"> {/* contextHolder is in Context1 which mean api will not get context of Context1 */} {contextHolder} <Context2.Provider value="Design"> {/* contextHolder is out of Context2 which mean api will not get context of Context2 */} </Context2.Provider> </Context1.Provider>);
direction
配置以支持 rtl
语言国际化。size
设置包含组件尺寸。suffix
属性。steps
子组件。onResize
。flex
布局。rtl
的国际化功能,@shaodahong 对于兼容包的贡献,以及每个参与帮助开发的人。是你们为开源的贡献让 Ant Design 变得更加美好!关键词:正式