---
title: Portlet 门户栏目
description:
type: 0
group: ⚙ 组件
menuName: Portlet
icon:
order: 60
---

门户栏目组件。

## 基本用法

```schema
{
    "type": "page",
    "data": {
        "text": "这是一段描述信息"
    },
    "body": {
        "type": "portlet",
        "description": "${text}",
        "tabs": [
            {
                "title": "标题",
                "tab": "Content 1"
            },
            {
                "title": "标题2",
                "tab": "Content 2"
            }
        ]
    }
}
```

## 配置工具栏

```schema: scope="body"
{
    "type": "portlet",
    "toolbar": [
        {
            "label": "固定操作",
            "type": "button",
            "actionType": "ajax",
            "api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/mock2/form/saveForm"
        }
    ],
    "tabs": [
        {
            "title": "Tab 1",
            "tab": "Content 1",
            "toolbar": [
                {
                    "label": "ajax请求",
                    "type": "button",
                    "actionType": "ajax",
                    "api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/mock2/form/saveForm"
                },
                {
                    "type": "dropdown-button",
                    "level": "link",
                    "icon": "fa fa-ellipsis-h",
                    "hideCaret": true,
                    "buttons": [
                        {
                            "type": "button",
                            "label": "编辑",
                            "actionType": "dialog",
                            "dialog": {
                            "title": "编辑",
                            "body": "你正在编辑该卡片"
                            }
                        },
                        {
                            "type": "button",
                            "label": "删除",
                            "actionType": "dialog",
                            "dialog": {
                            "title": "提示",
                            "body": "你删掉了该卡片"
                            }
                        }
                    ]
                }
            ]
        },
        {
            "title": "Tab 2",
            "tab": "Content 2",
            "toolbar": [
                {
                    "type": "button",
                    "level": "link",
                    "url": "https://www.baidu.com",
                    "actionType": "url",
                    "size": "sm",
                    "label": "跳转2"
                }
            ]
        }
    ]
}
```

## 隐藏头部

去掉头部,默认只展示内容 tab 第一项的内容

```schema: scope="body"
{
    "type": "portlet",
    "hideHeader": true,
    "tabs": [
        {
            "title": "Tab 1",
            "tab": "Content 1"
        }
    ]
}
```

## 设置 style

默认 tabs 只有一项的时候没有选中状态

```schema: scope="body"
{
    "type": "portlet",
    "style": {
        "borderColor": '#333'
    },
    "tabs": [
        {
            "title": "Tab 1",
            "tab": "Content 1"
        }
    ]
}
```

## 去掉分隔线

```schema: scope="body"
{
    "type": "portlet",
    "divider": false,
    "tabs": [
        {
            "title": "标题",
            "tab": "Content 1"
        }
    ]
}
```

## source 动态数据

配置 source 属性,根据某个数据来动态生成。具体使用参考 Tabs 选项卡组件

## 图标

通过 icon 可以设置 tab 的图标,可以是 fontawesome 或 URL 地址。

```schema: scope="body"
{
    "type": "portlet",
    "tabs": [
        {
            "title": "Tab 1",
            "tab": "Content 1",
            "icon": "https://suda.cdn.bcebos.com/images%2F2021-01%2Fdiamond.svg"
        },

        {
            "title": "Tab 2",
            "tab": "Content 2"
        }
    ]
}
```

## mountOnEnter

只有在点击卡片的时候才会渲染,在内容较多的时候可以提升性能,但第一次点击的时候会有卡顿。

## unmountOnExit

如果你想在切换 tab 时,自动销毁掉隐藏的 tab,请配置`"unmountOnExit": true`。

## 监听切换事件

```schema: scope="body"
{
    "type": "portlet",
    "activeKey": 1,
    "onSelect": "alert(key)",
    "tabs": [
      {
        "title": "Tab 1",
        "tab": "Content 1"
      },
      {
        "title": "Tab 2",
        "tab": "Content 2"
      }
    ]
  }
```

会传递 key 参数和 props

## 属性表

| 属性名                | 类型                                 | 默认值                              | 说明                                                                                       |
| --------------------- | ------------------------------------ | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| type                  | `string`                             | `"portlet"`                         | 指定为 Portlet 渲染器                                                                      |
| className             | `string`                             |                                     | 外层 Dom 的类名                                                                            |
| tabsClassName         | `string`                             |                                     | Tabs Dom 的类名                                                                            |
| contentClassName      | `string`                             |                                     | Tabs content Dom 的类名                                                                    |
| tabs                  | `Array`                              |                                     | tabs 内容                                                                                  |
| source                | `Object`                             |                                     | tabs 关联数据,关联后可以重复生成选项卡                                                    |
| toolbar               | [SchemaNode](../types/schemanode)    |                                     | tabs 中的工具栏,不随 tab 切换而变化                                                       |
| style                 | `string \| Object`                   |                                     | 自定义样式                                                                                 |
| description           | [模板](../../docs/concepts/template) |                                     | 标题右侧信息                                                                               |
| hideHeader            | `boolean`                            | false                               | 隐藏头部                                                                                   |
| divider               | `boolean`                            | false                               | 去掉分隔线                                                                                 |
| tabs[x].title         | `string`                             |                                     | Tab 标题                                                                                   |
| tabs[x].icon          | `icon`                               |                                     | Tab 的图标                                                                                 |
| tabs[x].tab           | [SchemaNode](../types/schemanode)    |                                     | 内容区                                                                                     |
| tabs[x].toolbar       | [SchemaNode](../types/schemanode)    |                                     | tabs 中的工具栏,随 tab 切换而变化                                                         |
| tabs[x].reload        | `boolean`                            |                                     | 设置以后内容每次都会重新渲染,对于 crud 的重新拉取很有用                                   |
| tabs[x].unmountOnExit | `boolean`                            |                                     | 每次退出都会销毁当前 tab 栏内容                                                            |
| tabs[x].className     | `string`                             | `"bg-white b-l b-r b-b wrapper-md"` | Tab 区域样式                                                                               |
| mountOnEnter          | `boolean`                            | false                               | 只有在点中 tab 的时候才渲染                                                                |
| unmountOnExit         | `boolean`                            | false                               | 切换 tab 的时候销毁                                                                        |
| scrollable            | `boolean`                            | false                               | 是否导航支持内容溢出滚动,`vertical`和`chrome`模式下不支持该属性;`chrome`模式默认压缩标签 |