diff --git a/site/src/router/index.js b/site/src/router/index.js
index 9451c0c40..4661515db 100644
--- a/site/src/router/index.js
+++ b/site/src/router/index.js
@@ -116,6 +116,16 @@ const routes = [
meta: { enTitle: 'Dynamic Theme (Experimental)', title: '动态主题', category: 'docs' },
component: () => import('../vueDocs/customize-theme-variable.en-US.md'),
},
+ {
+ path: 'vue/replace-date-cn',
+ meta: { enTitle: 'Custom Date Library', title: '自定义时间库', category: 'docs' },
+ component: () => import('../vueDocs/replace-date.zh-CN.md'),
+ },
+ {
+ path: 'vue/replace-date',
+ meta: { enTitle: 'Custom Date Library', title: '自定义时间库', category: 'docs' },
+ component: () => import('../vueDocs/replace-date.en-US.md'),
+ },
{
path: 'vue/migration-v2-cn',
meta: { enTitle: 'V1 to V2', title: '从 v1 到 v2', category: 'docs' },
@@ -137,14 +147,14 @@ const routes = [
component: () => import('../vueDocs/migration-v3.en-US.md'),
},
{
- path: 'vue/replace-date-cn',
- meta: { enTitle: 'Custom Date Library', title: '自定义时间库', category: 'docs' },
- component: () => import('../vueDocs/replace-date.zh-CN.md'),
+ path: 'vue/migration-v4-cn',
+ meta: { enTitle: 'V3 to V4', title: '从 V3 到 V4', category: 'docs' },
+ component: () => import('../vueDocs/migration-v4.zh-CN.md'),
},
{
- path: 'vue/replace-date',
- meta: { enTitle: 'Custom Date Library', title: '自定义时间库', category: 'docs' },
- component: () => import('../vueDocs/replace-date.en-US.md'),
+ path: 'vue/migration-v4',
+ meta: { enTitle: 'V3 to V4', title: '从 V3 到 V4', category: 'docs' },
+ component: () => import('../vueDocs/migration-v4.en-US.md'),
},
{
path: 'vue/i18n-cn',
diff --git a/site/src/vueDocs/getting-started.en-US.md b/site/src/vueDocs/getting-started.en-US.md
index 4706b7412..b67fffe0a 100644
--- a/site/src/vueDocs/getting-started.en-US.md
+++ b/site/src/vueDocs/getting-started.en-US.md
@@ -37,7 +37,7 @@ And, setup your vue project configuration.
#### Install
```bash
-$ npm i --save ant-design-vue
+$ npm i --save ant-design-vue@4.x
```
#### Component Registration
@@ -50,7 +50,7 @@ If you use Vue's default template syntax, you need to register components before
import { createApp } from 'vue';
import Antd from 'ant-design-vue';
import App from './App';
-import 'ant-design-vue/dist/antd.css';
+import 'ant-design-vue/dist/reset.css';
const app = createApp(App);
@@ -99,35 +99,9 @@ In this way, component sub-components, such as Button and ButtonGroup, need to b
[Component list](https://github.com/vueComponent/ant-design-vue/blob/main/components/components.ts)
-## Compatibility
-
-Ant Design Vue 2.x supports all the modern browsers. If you want to use IE9+, you can use Ant Design Vue 1.x & Vue 2.x.
-
## Import on Demand
-we can import individual components on demand:
-
-```jsx
-import Button from 'ant-design-vue/lib/button';
-import 'ant-design-vue/lib/button/style'; // or ant-design-vue/lib/button/style/css for css format file
-```
-
-We strongly recommend using [babel-plugin-import](https://github.com/ant-design/babel-plugin-import), which can convert the following code to the 'ant-design-vue/lib/xxx' way:
-
-```jsx
-import { Button } from 'ant-design-vue';
-```
-
-And this plugin can load styles too, read [usage](https://github.com/ant-design/babel-plugin-import#usage) for more details.
-
-> FYI, babel-plugin-import's `style` option will importing some global reset styles, don't use it if you don't need those styles. You can import styles manually via `import 'ant-design-vue/dist/antd.css'` and override the global reset styles.
-
-If you use Vite, you can use [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) to load on demand. However, this plugin can only deal with components. Others such as message should be loaded manually:
-
-```ts
-import { message } from 'ant-design-vue';
-import 'ant-design-vue/es/message/style/css'; //use ant-design-vue/es instead of ant-design-vue/lib
-```
+`ant-design-vue` supports tree shaking of ES modules, so using `import { Button } from 'ant-design-vue';` would drop js code you didn't use.
## Customization
diff --git a/site/src/vueDocs/getting-started.zh-CN.md b/site/src/vueDocs/getting-started.zh-CN.md
index d31ebe166..c0f97e5e7 100644
--- a/site/src/vueDocs/getting-started.zh-CN.md
+++ b/site/src/vueDocs/getting-started.zh-CN.md
@@ -39,7 +39,7 @@ $ vue create antd-demo
#### 安装
```bash
-$ npm i --save ant-design-vue
+$ npm i --save ant-design-vue@4.x
```
#### 注册
@@ -52,7 +52,7 @@ $ npm i --save ant-design-vue
import { createApp } from 'vue';
import Antd from 'ant-design-vue';
import App from './App';
-import 'ant-design-vue/dist/antd.css';
+import 'ant-design-vue/dist/reset.css';
const app = createApp(App);
@@ -97,37 +97,9 @@ app.config.globalProperties.$message = message;
```
-## 兼容性
-
-Ant Design Vue 2.x+ 支持所有的现代浏览器。
-
-如果需要支持 IE9+,你可以使用 Ant Design Vue 1.x & Vue 2.x。
-
## 按需加载
-如果你仅需要加载使用的组件,可以通过以下的写法来按需加载组件。
-
-```jsx
-import Button from 'ant-design-vue/lib/button';
-import 'ant-design-vue/lib/button/style'; // 或者 ant-design-vue/lib/button/style/css 加载 css 文件
-```
-
-如果你使用了 babel,那么可以使用 [babel-plugin-import](https://github.com/ant-design/babel-plugin-import) 来进行按需加载,加入这个插件后。你可以仍然这么写:
-
-```jsx
-import { Button } from 'ant-design-vue';
-```
-
-插件会帮你转换成 `ant-design-vue/lib/xxx` 的写法。另外此插件配合 [style](https://github.com/ant-design/babel-plugin-import#usage) 属性可以做到模块样式的按需自动加载。
-
-> 注意,babel-plugin-import 的 `style` 属性除了引入对应组件的样式,也会引入一些必要的全局样式。如果你不需要它们,建议不要使用此属性。你可以 `import 'ant-design-vue/dist/antd.css` 手动引入,并覆盖全局样式。
-
-如果你使用的 Vite,你可以使用 [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) 来进行按需加载。但是此插件无法处理非组件模块,如 message,这种组件需要手动加载:
-
-```ts
-import { message } from 'ant-design-vue';
-import 'ant-design-vue/es/message/style/css'; //vite只能用 ant-design-vue/es 而非 ant-design-vue/lib
-```
+`ant-design-vue` 默认支持基于 ES modules 的 tree shaking,直接引入 `import { Button } from 'ant-design-vue';` 就会有按需加载的效果。
## 配置主题和字体
diff --git a/site/src/vueDocs/introduce.en-US.md b/site/src/vueDocs/introduce.en-US.md
index 679b5bc1a..771985c88 100644
--- a/site/src/vueDocs/introduce.en-US.md
+++ b/site/src/vueDocs/introduce.en-US.md
@@ -49,11 +49,11 @@ You can subscribe to this feed for new version notifications: https://github.com
**We recommend using npm or yarn to install**,it not only makes development easier,but also allow you to take advantage of the rich ecosystem of Javascript packages and tooling.
```bash
-$ npm install ant-design-vue --save
+$ npm install ant-design-vue@4.x --save
```
```bash
-$ yarn add ant-design-vue
+$ yarn add ant-design-vue@4.x
```
If you are in a bad network environment,you can try other registries and tools like [cnpm](https://github.com/cnpm/cnpm).
@@ -62,11 +62,11 @@ If you are in a bad network environment,you can try other registries and tools
Add `script` and `link` tags in your browser and use the global variable `antd`.
-We provide `antd.js` `antd.css` and `antd.min.js` `antd.min.css` under `ant-design-vue/dist` in antd's npm package. You can also download these files directly from [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/ant-design-vue/badge)](https://www.jsdelivr.com/package/npm/ant-design-vue) or [unpkg](https://unpkg.com/ant-design-vue/dist/).
+We provide `antd.js` `antd.min.js` and `reset.css` under `ant-design-vue/dist` in antd's npm package. You can also download these files directly from [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/ant-design-vue/badge)](https://www.jsdelivr.com/package/npm/ant-design-vue) or [unpkg](https://unpkg.com/ant-design-vue/dist/).
> **We strongly discourage loading the entire files** this will add bloat to your application and make it more difficult to receive bugfixes and updates. Antd is intended to be used in conjunction with a build tool, such as [webpack](https://webpack.github.io/), which will make it easy to import only the parts of antd that you are using.
-> Note: you should import [dayjs](https://day.js.org/) and dayjs plugins before using antd.js.
+> Note: you should import `vue`, [dayjs](https://day.js.org/) and dayjs plugins before using `antd.js`.
Like:
@@ -78,6 +78,7 @@ Like:
+
```
## Usage
@@ -90,55 +91,12 @@ app.use(DatePicker);
And import stylesheets manually:
```jsx
-import 'ant-design-vue/dist/antd.css'; // or 'ant-design-vue/dist/antd.less'
+import 'ant-design-vue/dist/reset.css';
```
-### Use modularized antd
+### Use modularized ant-design-vue
-- Use [babel-plugin-import](https://github.com/ant-design/babel-plugin-import) (Recommended)
-
- ```jsx
- // .babelrc or babel-loader option
- {
- "plugins": [
- ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es", "style": "css" }] // `style: true` for less
- ]
- }
- ```
-
- > Note: Don't set `libraryDirectory` if you are using webpack 1.
-
- This allows you to import components from antd without having to manually import the corresponding stylesheet. The antd babel plugin will automatically import stylesheets.
-
- ```jsx
- // import js and css modularly, parsed by babel-plugin-import
- import { DatePicker } from 'ant-design-vue';
- ```
-
-- Manually import
-
- ```jsx
- import DatePicker from 'ant-design-vue/lib/date-picker'; // for js
- import 'ant-design-vue/lib/date-picker/style/css'; // for css
- // import 'ant-design-vue/lib/date-picker/style'; // that will import less
- ```
-
-- For Vite
-
- ```js
- // vite.config.js
- import Components from 'unplugin-vue-components/vite';
- import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
-
- export default {
- plugins: [
- /* ... */
- Components({
- resolvers: [AntDesignVueResolver()],
- }),
- ],
- };
- ```
+`ant-design-vue` supports ES modules tree shaking by default.
## Links
@@ -154,7 +112,7 @@ import 'ant-design-vue/dist/antd.css'; // or 'ant-design-vue/dist/antd.less'
## Contributing
-If you'd like to help us improve antd, just create a [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls). Feel free to report bugs and issues [here](https://vuecomponent.github.io/issue-helper/).
+If you'd like to help us improve ant-design-vue, just create a [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls). Feel free to report bugs and issues [here](https://vuecomponent.github.io/issue-helper/).
> If you're new to posting issues, we ask that you read [_How To Ask Questions The Smart Way_](http://www.catb.org/~esr/faqs/smart-questions.html) and [How to Ask a Question in Open Source Community](https://github.com/seajs/seajs/issues/545) and [How to Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) prior to posting. Well written bug reports help us help you!
diff --git a/site/src/vueDocs/introduce.zh-CN.md b/site/src/vueDocs/introduce.zh-CN.md
index 3da5b9ee4..8b231d653 100644
--- a/site/src/vueDocs/introduce.zh-CN.md
+++ b/site/src/vueDocs/introduce.zh-CN.md
@@ -49,11 +49,11 @@
**我们推荐使用 npm 或 yarn 的方式进行开发**,不仅可在开发环境轻松调试,也可放心地在生产环境打包部署使用,享受整个生态圈和工具链带来的诸多好处。
```bash
-$ npm install ant-design-vue --save
+$ npm install ant-design-vue@4.x --save
```
```bash
-$ yarn add ant-design-vue
+$ yarn add ant-design-vue@4.x
```
如果你的网络环境不佳,推荐使用 [cnpm](https://github.com/cnpm/cnpm)。
@@ -62,11 +62,11 @@ $ yarn add ant-design-vue
在浏览器中使用 `script` 和 `link` 标签直接引入文件,并使用全局变量 `antd`。
-我们在 npm 发布包内的 `ant-design-vue/dist` 目录下提供了 `antd.js` `antd.css` 以及 `antd.min.js` `antd.min.css`。你也可以通过 [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/ant-design-vue/badge)](https://www.jsdelivr.com/package/npm/ant-design-vue) 或 [UNPKG](https://unpkg.com/ant-design-vue/dist/) 进行下载。
+我们在 npm 发布包内的 `ant-design-vue/dist` 目录下提供了 `antd.js`、`antd.min.js` 和 `reset.css`。你也可以通过 [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/ant-design-vue/badge)](https://www.jsdelivr.com/package/npm/ant-design-vue) 或 [UNPKG](https://unpkg.com/ant-design-vue/dist/) 进行下载。
> **强烈不推荐使用已构建文件**,这样无法按需加载,而且难以获得底层依赖模块的 bug 快速修复支持。
-> 注意:引入 antd.js 前你需要自行引入 [dayjs](https://day.js.org/) 及其相关插件。
+> 注意:引入 `antd.js` 前你需要自行引入 `vue`、[`dayjs`](https://day.js.org/) 及其相关插件。
如:
@@ -78,6 +78,7 @@ $ yarn add ant-design-vue
+
```
## 示例
@@ -90,57 +91,12 @@ app.use(DatePicker);
引入样式:
```jsx
-import 'ant-design-vue/dist/antd.css'; // or 'ant-design-vue/dist/antd.less'
+import 'ant-design-vue/dist/reset.css';
```
### 按需加载
-下面两种方式都可以只加载用到的组件。
-
-- 使用 [babel-plugin-import](https://github.com/ant-design/babel-plugin-import)(推荐)。
-
- ```jsx
- // .babelrc or babel-loader option
- {
- "plugins": [
- ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es", "style": "css" }] // `style: true` 会加载 less 文件
- ]
- }
- ```
-
- > 注意:webpack 1 无需设置 `libraryDirectory`。
-
- 然后只需从 ant-design-vue 引入模块即可,无需单独引入样式。等同于下面手动引入的方式。
-
- ```jsx
- // babel-plugin-import 会帮助你加载 JS 和 CSS
- import { DatePicker } from 'ant-design-vue';
- ```
-
-- 手动引入
-
- ```jsx
- import DatePicker from 'ant-design-vue/lib/date-picker'; // 加载 JS
- import 'ant-design-vue/lib/date-picker/style/css'; // 加载 CSS
- // import 'ant-design-vue/lib/date-picker/style'; // 加载 LESS
- ```
-
-- Vite 按需
-
- ```js
- // vite.config.js
- import Components from 'unplugin-vue-components/vite';
- import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
-
- export default {
- plugins: [
- /* ... */
- Components({
- resolvers: [AntDesignVueResolver()],
- }),
- ],
- };
- ```
+`ant-design-vue` 默认支持基于 ES modules 的 tree shaking。
## 链接
diff --git a/site/src/vueDocs/migration-v4.en-US.md b/site/src/vueDocs/migration-v4.en-US.md
new file mode 100644
index 000000000..0a02366a8
--- /dev/null
+++ b/site/src/vueDocs/migration-v4.en-US.md
@@ -0,0 +1,178 @@
+This document will help you upgrade from ant-design-vue `3.x` version to ant-design-vue `4.x` version. If you are using `2.x` or older version, please refer to the previous [upgrade document](/docs/vue/migration-v3) to 3.x.
+
+## Upgrade preparation
+
+1. Please upgrade to the latest version of 3.x first, and remove / modify related APIs according to the console warning message.
+
+## Incompatible changes in v4
+
+### Design specification
+
+- Basic rounded corner adjustment, changed from `2px` to four layers of radius, which are `2px` `4px` `6px` and `8px`. For example, radius of default Button is modified from `2px` to `6px`.
+- Primary color adjustment, changed from `#1890ff` to `#1677ff`.
+- Global shadow optimization, adjusted from three layers of shadows to two layers, which are used in common components (Card .e.g) and popup components (Dropdown .e.g).
+- Overall reduction in wireframe usage.
+
+### Technology adjustment
+
+- Remove less, adopt CSS-in-JS, for better support of dynamic themes.
+ - All less files are removed, and less variables are no longer exported.
+ - Css files are no longer included in package. Since CSS-in-JS supports importing on demand, the original `ant-design-vue/dist/antd.css` has also been abandoned. If you need to reset some basic styles, please import `ant-design-vue/dist/reset.css`.
+ - If you need to reset the style of the component, but you don't want to introduce `ant-design-vue/dist/reset.css` to pollute the global style, You can try using the [App](/components/app) in the outermost layer to solve the problem that native elements do not have antd specification style.
+- Remove css variables and dynamic theme built on top of them.
+- LocaleProvider has been deprecated in 3.x (use `` instead), we removed the related folder `ant-design-vue/es/locale-provider` and `ant-design-vue/lib/locale-provider` in 4.x.
+- Replace built-in Moment.js with Dayjs. For more: [Use custom date library](/docs/vue/use-custom-date-library/).
+- `babel-plugin-import` is no longer supported. CSS-in-JS itself has the ability to import on demand, and plugin support is no longer required.
+
+### Compatibility
+
+- DO NOT support IE browser anymore.
+
+#### Component API adjustment
+
+- The classname API of the component popup box is unified to `popupClassName`, and `dropdownClassName` and other similar APIs will be replaced.
+
+ - AutoComplete
+ - Cascader
+ - Select
+ - TreeSelect
+ - TimePicker
+ - DatePicker
+ - Mentions
+
+ ```html
+
+
+
+
+
+ ```
+
+- The controlled visible API of the component popup is unified to `open`, and `visible` and other similar APIs will be replaced.
+
+ - Drawer `visible` changed to `open`.
+ - Modal `visible` changed to `open`.
+ - Dropdown `visible` changed to `open`.
+ - Tooltip `visible` changed to `open`.
+ - Tag `visible` is removed.
+ - Slider `tooltip` related API converged to `tooltip` property.
+ - Table `filterDropdownVisible` changed to `filterDropdownOpen`.
+
+ ```html
+
+ -
+ content
+ +
+ content
+
+ -
+ tag
+ +
+ tag
+
+
+
+ -
+
+ +
+
+
+
+
+ ```
+
+- `getPopupContainer`: All `getPopupContainer` are guaranteed to return a unique div.
+- Drawer `style` & `class` are migrated to Drawer panel node, the original properties are replaced by `rootClassName` and `rootStyle`.
+
+#### Component refactoring and removal
+
+- Remove `locale-provider` Directory. `LocaleProvider` was removed in v4, please use `ConfigProvider` instead.
+- BackTop is deprecated in `4.0.0`, and is merged into FloatButton.
+
+## Start upgrading
+
+Use git to save your code and install latest version:
+
+```bash
+npm install --save ant-design-vue@4
+```
+
+### less migration
+
+If you using ant-design-vue less variables, you can use compatible package to covert it into v3 less variables and use less-loader to inject them:
+
+```js
+const { theme } = require('ant-design-vue/lib');
+const convertLegacyToken = require('ant-design-vue/lib/theme/convertLegacyToken');
+
+const { defaultAlgorithm, defaultSeed } = theme;
+
+const mapToken = defaultAlgorithm(defaultSeed);
+const v3Token = convertLegacyToken(mapToken);
+
+// Webpack Config
+module.exports = {
+ // ... other config
+ loader: 'less-loader',
+ options: {
+ lessOptions: {
+ modifyVars: v3Token,
+ },
+ },
+};
+```
+
+Ant then remove ant-design-vue less reference in your less file:
+
+```diff
+// Your less file
+-- @import (reference) '~ant-design-vue/es/style/themes/index';
+or
+-- @import '~ant-design-vue/es/style/some-other-less-file-ref';
+```
+
+### Remove babel-plugin-import
+
+Remove `babel-plugin-import` from package.json and modify `.babelrc`:
+
+```diff
+"plugins": [
+- ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "lib"}, "ant-design-vue"],
+]
+```
+
+### Legacy browser support
+
+Ant Design Vue v4 using `:where` css selector to reduce CSS-in-JS hash priority. You can use `StyleProvider` to cancel this function. Please ref [Compatible adjustment](/docs/vue/customize-theme#compatible-adjustment).
+
+## Encounter problems
+
+If you encounter problems during the upgrade, please go to [GitHub issues](https://github.com/vueComponent/ant-design-vue/issues) for feedback. We will respond and improve this document as soon as possible.
diff --git a/site/src/vueDocs/migration-v4.zh-CN.md b/site/src/vueDocs/migration-v4.zh-CN.md
new file mode 100644
index 000000000..c76ba63c5
--- /dev/null
+++ b/site/src/vueDocs/migration-v4.zh-CN.md
@@ -0,0 +1,179 @@
+本文档将帮助你从 ant-design-vue `3.x` 版本升级到 ant-design-vue `4.x` 版本,如果你是 `2.x` 或者更老的版本,请先参考之前的[升级文档](/docs/vue/migration-v3-cn)升级到 3.x。
+
+## 升级准备
+
+1. 请先升级到 3.x 的最新版本,按照控制台 warning 信息移除/修改相关的 API。
+
+## 4.0 有哪些不兼容的变化
+
+### 设计规范调整
+
+- 基础圆角调整,由统一的 `2px` 改为四级圆角,分别为 `2px` `4px` `6px` `8px`,分别应用于不同场景,比如默认尺寸的 Button 的圆角调整为了 `6px`。
+- 主色调整,由 `#1890ff` 改为 `#1677ff`。
+- 整体阴影调整,由原本的三级阴影调整为两级,分别用于常驻页面的组件(如 Card)和交互反馈(如 Dropdown)。
+- 部分组件内间距调整。
+- 整体去线框化。
+
+### 技术调整
+
+- 弃用 less,采用 CSS-in-JS,更好地支持动态主题。
+ - 所有 less 文件全部移除,less 变量不再支持透出。
+ - 产物中不再包含 css 文件。由于 CSS-in-JS 支持按需引入,原本的 `ant-design-vue/dist/antd.css` 也已经移除,如果需要重置一些基本样式请引入 `ant-design-vue/dist/reset.css`。
+ - 如果需要组件重置样式,又不想引入 `ant-design-vue/dist/reset.css` 从而导致污染全局样式的话,可以尝试在应用最外层使用[App 组件](/components/app-cn),解决原生元素没有 ant-design-vue 规范样式的问题。
+- 移除 css variables 以及在此之上构筑的动态主题方案。
+- LocaleProvider 在 3.x 中已经废弃(使用 `` 替代),我们在 4.x 里彻底移除了相关目录 `ant-design-vue/es/locale-provider`、`ant-design-vue/lib/locale-provider`。
+- 不再支持 `babel-plugin-import`,CSS-in-JS 本身具有按需加载的能力,不再需要插件支持。
+
+### 兼容性调整
+
+- 不再支持 IE 浏览器。
+
+#### 组件 API 调整
+
+- 组件弹框的 classname API 统一为 `popupClassName`,`dropdownClassName` 等类似 API 都会被替换。
+
+ - AutoComplete 组件
+ - Cascader 组件
+ - Select 组件
+ - TreeSelect 组件
+ - TimePicker 组件
+ - DatePicker 组件
+ - Mentions 组件
+
+ ```html
+
+
+
+
+
+ ```
+
+- 组件弹框的受控可见 API 统一为 `open`,`visible` 等类似 API 都会被替换。
+
+ - Drawer 组件 `visible` 变为 `open`。
+ - Modal 组件 `visible` 变为 `open`。
+ - Dropdown 组件 `visible` 变为 `open`。
+ - Tooltip 组件 `visible` 变为 `open`。
+ - Tag 组件 `visible` 已移除。
+ - Slider 组件 `tooltip` 相关 API 收敛到 `tooltip` 属性中。
+ - Table 组件 `filterDropdownVisible` 变为 `filterDropdownOpen`。
+
+ ```html
+
+ -
+ content
+ +
+ content
+
+ -
+ tag
+ +
+ tag
+
+
+
+ -
+
+ +
+
+
+
+
+ ```
+
+- `getPopupContainer`: 所有的 `getPopupContainer` 都需要保证返回的是唯一的 div。
+- Drawer `style` 和 `class` 迁移至 Drawer 弹层区域上,原属性替换为 `rootClassName` 和 `rootStyle`。
+
+#### 组件重构与移除
+
+- 移除 `locale-provider` 目录。`LocaleProvider` 在 v3 中已移除,请使用 `ConfigProvider` 替代。
+
+- BackTop 组件在 `4.0.0` 中废弃,移至 FloatButton 悬浮按钮中。如需使用,可以从 FloatButton 中引入。
+
+## 开始升级
+
+通过 git 保存你的代码,然后按照上述文档进行依赖安装:
+
+```bash
+npm install --save ant-design-vue@4.x
+```
+
+### less 迁移
+
+如果你使用到了 ant-design-vue 的 less 变量,通过兼容包将 v4 变量转译成 v3 版本,并通过 less-loader 注入:
+
+```js
+const { theme } = require('ant-design-vue/lib');
+const convertLegacyToken = require('ant-design-vue/lib/theme/convertLegacyToken');
+
+const { defaultAlgorithm, defaultSeed } = theme;
+
+const mapToken = defaultAlgorithm(defaultSeed);
+const v3Token = convertLegacyToken(mapToken);
+
+// Webpack Config
+module.exports = {
+ // ... other config
+ loader: 'less-loader',
+ options: {
+ lessOptions: {
+ modifyVars: v3Token,
+ },
+ },
+};
+```
+
+同时移除对 ant-design-vue less 文件的直接引用:
+
+```diff
+// Your less file
+-- @import (reference) '~ant-design-vue/es/style/themes/index';
+or
+-- @import '~ant-design-vue/es/style/some-other-less-file-ref';
+```
+
+### 移除 babel-plugin-import
+
+从 package.json 中移除 `babel-plugin-import`,并从 `.babelrc` 移除该插件:
+
+```diff
+"plugins": [
+- ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "lib"}, "ant-design-vue"],
+]
+```
+
+### 旧版浏览器兼容
+
+Ant Design Vue v4 使用 `:where` css selector 降低 CSS-in-JS hash 值优先级,如果你需要支持旧版本浏览器(如 IE 11、360 浏览器 等等)。可以通过 `StyleProvider` 去除降权操作。详情请参阅 [兼容性调整](/docs/vue/customize-theme-cn#兼容性调整)。
+
+## 遇到问题
+
+如果您在升级过程中遇到了问题,请到 [GitHub issues](https://github.com/vueComponent/ant-design-vue/issues) 进行反馈。我们会尽快响应和相应改进这篇文档。