skyline/docs/zh/develop/3-2-BaseTabList-introduction.md
zhuyue bd501ba416 fix: Fix for docs link address
fix for docs link address

Change-Id: I8539ba5a546621e543b2c4c83066489b98e308c5
2021-08-27 17:28:20 +08:00

124 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

简体中文 | [English](../../en/develop/3-2-BaseTabList-introduction.md)
# 用途
- 各可切换列表页的基类
![Tab列表页](../../zh/develop/images/list/tab-list.png)
- 支持切换时自动处理数据展示
# BaseTabList 代码文件
- `src/containers/TabList/index.jsx`
# BaseTabList 属性与函数定义介绍
- 带有 Tab 切换的资源列表继承于 BaseTabList
- 只需要复写部分函数即可完成页面的开发
- 属性与函数分为以下四种,
- 需要复写的属性与函数,主要包含:
- 页面内的`Tab`配置
- 按需复写的函数与属性,主要包含:
- 页面内的权限配置
- 无需复写的函数与属性,主要包含:
- 当前页是否是管理平台页面
- 基类中的基础函数,主要包含:
- 渲染页面
- 处理切换 Tab 时的路由变动
- 更详细与全面的介绍见下
## 需要复写的属性与函数
- `tabs`:
- 需要复写该函数
- 用于配置页面内的 Tab
- 每个 Tab 的配置项:
- `title`Tab 标签上的标题
- `key`,每个 Tab 的唯一标识
- `component`,每个 Tab 对应的组件,基本都是继承于`BaseList`的资源列表组件
- 返回 Tab 配置的列表
- 页面默认显示 Tab 列表中的第一个`component`
- 以镜像`src/pages/compute/containers/Image/index.jsx`为例
```javascript
get tabs() {
const tabs = [
{
title: t('Current Project Image'),
key: 'project',
component: Image,
},
{
title: t('Public Image'),
key: 'public',
component: Image,
},
{
title: t('Shared Image'),
key: 'shared',
component: Image,
},
];
if (this.hasAdminRole) {
tabs.push({
title: t('All Image'),
key: 'all',
component: Image,
});
}
return tabs;
}
```
## 按需复写的属性与函数
- 以下涉及到的属性与函数,一般均不需要配置
- 目前只在 VPN 页面(`src/pages/network/containers/VPN/index.jsx`)使用,该页面使用这些配置判定权限,以及判定失败时展示使用
- `name`
- 整个 Tab 页面的全称
- 以 VPN `src/pages/network/containers/VPN/index.jsx`为例
```javascript
get name() {
return t('VPN');
}
```
- `checkEndpoint`
- 是否需要验证该页面对应服务的 endpoint
- 默认值是`false`
- 以 VPN `src/pages/network/containers/VPN/index.jsx`为例
```javascript
get checkEndpoint() {
return true;
}
```
- `endpoint`
- 该页面对应服务的 endpoint
- 仅在`checkEndpoint=true`时有用
- 以 VPN `src/pages/network/containers/VPN/index.jsx`为例
```javascript
get endpoint() {
return vpnEndpoint();
}
```
## 不需要复写的属性与函数
- `location`
- 页面的路由信息
- `isAdminPage`
- 当前页面是否是“管理平台”的页面
- `hasAdminRole`
- 登录的用户角色是否具有管理员角色
- `getUrl`
- 生成页面 Url 的函数
- 如:需要给列表页的关联资源提供跳转功能,使用该函数,可以在控制台跳转到控制台的相应地址,在管理平台跳转到管理平台的相应地址
## 基类中的基础函数
- 建议查看代码理解,`src/containers/TabList/index.jsx`