--- order: 7 title: 从 v3 到 v4 --- 我们提供了一个 codemod cli 工具 [@ant-design/codemod-v4](https://github.com/ant-design/codemod-v4) 以帮助你快速升级到 v4 版本。 ## 使用 在运行 codemod cli 前,请先提交你的本地代码修改。 ```shell # 通过 npx 直接运行 npx -p @ant-design/codemod-v4 antd4-codemod src # 或者全局安装 # 使用 npm npm i -g @ant-design/codemod-v4 # 或者使用 yarn yarn add -g @ant-design/codemod-v4 # 运行 antd4-codemod src ``` ## 写在前面 `@ant-design/codemod-v4` 会帮你迁移到 antd v4, 废弃的 API 和组件则通过 `@ant-design/compatible` 保持运行, 一般来说你无需手动迁移。下方内容详细介绍了整体的迁移和变化。 #### 将已废弃的 `Form` 和 `Mention` 组件通过 `@ant-design/compatible` 包引入 ```diff - import { Form, Input, Button, Mention } from 'antd'; + import { Form, Mention } from '@ant-design/compatible'; + import '@ant-design/compatible/assets/index.css'; + import { Input, Button } from 'antd'; ReactDOM.render( (
{getFieldDecorator('username')()}
); ``` #### 用新的 `@ant-design/icons` 替换组件的字符串 icon prop ```diff import { Avatar, Button, Result } from 'antd'; + import { QuestionOutlined, UserOutlined } from '@ant-design/icons'; ReactDOM.render(
- } />
, mountNode, ); ``` #### 将 v3 Icon 组件转换成 `@ant-design/icons` 中引入 ```diff - import { Icon, Input } from 'antd'; + import { Input } from 'antd'; + import Icon, { CodeFilled, SmileOutlined, SmileTwoTone } from '@ant-design/icons'; const HeartSvg = () => ( ); const HeartIcon = props => ; ReactDOM.render(
- + - + - + Cool Home } />
, mountNode, ); ``` #### 将 v3 LocaleProvider 组件转换成 v4 ConfigProvider 组件 ```diff - import { LocaleProvider } from 'antd'; + import { ConfigProvider } from 'antd'; ReactDOM.render( - +
- + mountNode, ); ``` #### 将 `Modal.method()` 中字符串 icon 属性的调用转换成从 `@ant-design/icons` 中引入 ```diff import { Modal } from 'antd'; + import { AntDesignOutlined } from '@ant-design/icons'; Modal.confirm({ - icon: 'ant-design', + icon: , title: 'Do you Want to delete these items?', content: 'Some descriptions', onOk() { console.log('OK'); }, onCancel() { console.log('Cancel'); }, }); ```