diff --git a/packages/tab/en-US.md b/packages/tab/en-US.md
index f3c955bde..39a5c59d5 100644
--- a/packages/tab/en-US.md
+++ b/packages/tab/en-US.md
@@ -174,12 +174,19 @@ In swipeable mode, you can switch tabs with swipe gestrue in the content
| title | Title | `String` | - |
| disabled | Whether to disable tab | `Boolean` | `false` |
+### Tabs Slot
+
+| name | Description |
+|------|------|
+| nav-left | Custom nav left content |
+| nav-right | Custom nav right content |
+
### Tab Slot
| name | Description |
|------|------|
-| - | Content |
-| title | Custom tab |
+| default | Content of tab |
+| title | Custom tab title |
### Tabs Event
diff --git a/packages/tab/test/__snapshots__/index.spec.js.snap b/packages/tab/test/__snapshots__/index.spec.js.snap
index a681b9ca5..21b6ff2c5 100644
--- a/packages/tab/test/__snapshots__/index.spec.js.snap
+++ b/packages/tab/test/__snapshots__/index.spec.js.snap
@@ -139,6 +139,28 @@ exports[`lazy render 2`] = `
`;
+exports[`render nav-left & nav-right slot 1`] = `
+
+
+
Nav Left
+
title1
+
+
title3
Nav Right
+
+
+
+
+`;
+
exports[`swipe to switch tab 1`] = `
diff --git a/packages/tab/test/index.spec.js b/packages/tab/test/index.spec.js
index ad51b3263..ee61313a9 100644
--- a/packages/tab/test/index.spec.js
+++ b/packages/tab/test/index.spec.js
@@ -2,17 +2,19 @@ import Tab from '..';
import Tabs from '../../tabs';
import { mount, later, triggerDrag } from '../../../test/utils';
-function createWrapper(options) {
+function createWrapper(options = {}) {
return mount({
template: `
-
+ ${options.extraTemplate || ''}
Text
title2
@@ -112,3 +114,14 @@ test('lazy render', async () => {
await later();
expect(wrapper).toMatchSnapshot();
});
+
+test('render nav-left & nav-right slot', async () => {
+ const wrapper = createWrapper({
+ extraTemplate: `
+ Nav Left
+ Nav Right
+ `
+ });
+
+ expect(wrapper).toMatchSnapshot();
+});
diff --git a/packages/tab/zh-CN.md b/packages/tab/zh-CN.md
index 8139a27be..25b2747ea 100644
--- a/packages/tab/zh-CN.md
+++ b/packages/tab/zh-CN.md
@@ -178,11 +178,18 @@ export default {
| title | 标题 | `String` | - | - |
| disabled | 是否禁用标签 | `Boolean` | `false` | - |
+### Tabs Slot
+
+| 名称 | 说明 |
+|------|------|
+| nav-left | 标题左侧内容 |
+| nav-right | 标题右侧内容 |
+
### Tab Slot
| 名称 | 说明 |
|------|------|
-| - | 标签页内容 |
+| default | 标签页内容 |
| title | 自定义标签 |
### Tabs Event
diff --git a/packages/tabs/index.js b/packages/tabs/index.js
index 1aad650d2..0b9aec2b1 100644
--- a/packages/tabs/index.js
+++ b/packages/tabs/index.js
@@ -425,8 +425,10 @@ export default sfc({
class={[bem('wrap', { scrollable }), { 'van-hairline--top-bottom': type === 'line' }]}
>
+ {this.slots('nav-left')}
{type === 'line' &&
}
{Nav}
+ {this.slots('nav-right')}