@b-design/ui-layout
Version:
React component for Alibaba Cloud.
273 lines (230 loc) • 6.14 kB
Markdown
# @b-design/ui-layout
## 安装
```bash
tnpm i -S @b-design/ui-layout
```
## 介绍
### 我们为您提供了三种固定布局组件以及可自由定制的组件:
<VerticalLayout />组件为左侧垂直菜单和header区域布局;
<HozLayout />组件为菜单和Header区域融合布局;
<BothSidesLayout />组件为二级导航布局,即为顶部导航和左侧导航共存;
<Layout />组件为可自由定制组件;
## 使用示例
### 基本使用
```javascript
import Layout from '@b-design/ui-layout';
import { Breadcrumb } from '@b-design/ui'
const items = [
{ key: '/home', to: '/home', label: '首页', icon: 'Home-outlined', },
{ key: '/instance', to: '/instance', label: '实例概览', icon: 'Home-outlined', },
{
key: '/logs',
label: '日志',
icon: 'Home-outlined',
items: [
{ key: '/pre', to: '/pre', label: '预发环境' },
{ key: '/prod', to: '/prod', label: '生产环境' },
],
},
]
const breadcrumb = (
<Breadcrumb>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Blog</Breadcrumb.Item>
<Breadcrumb.Item>Name It, and They Will Come</Breadcrumb.Item>
</Breadcrumb>
)
const Layout = (props) => {
return (
<Layout>
<Layout.Header
leftContainer={(<div>Header左侧区域</div>)}
title='B-Design'
rightContainer={(<div>Header右侧区域</div>)}
style={{ color: '#ffffff' }}
/>
<Layout.Container>
<Layout.Sider>
<RoutableMenu
items={items}
style={{height: '100%', width: '200px'}}
/>
</Layout.Sider>
<Page style={{flex: 'auto'}}>
<Page.Header
title={'测试测试测试测'}
breadcrumb={breadcrumb}
onBackArrowClick={() => {
window.history.back()
}}
/>
<Page.Content>
<div>内容内容内容</div>
</Page.Content>
</Page>
</Layout.Container>
</Layout>
)
}
```
## 固定布局
### 使用左侧菜单固定布局
```javascript
import { VerticalLayout } from '@b-design/ui-layout';
import { Breadcrumb } from '@b-design/ui'
const items = [
{ key: '/home', to: '/home', label: '首页', icon: 'Home-outlined', },
{ key: '/instance', to: '/instance', label: '实例概览', icon: 'Home-outlined', },
{
key: '/logs',
label: '日志',
icon: 'Home-outlined',
items: [
{ key: '/pre', to: '/pre', label: '预发环境' },
{ key: '/prod', to: '/prod', label: '生产环境' },
],
},
]
const breadcrumb = (
<Breadcrumb>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Blog</Breadcrumb.Item>
<Breadcrumb.Item>Name It, and They Will Come</Breadcrumb.Item>
</Breadcrumb>
)
const Layout = (props) => {
return (
<VerticalLayout
breadcrumb={breadcrumb}
menus={items}
leftContainer={(<div>Header左侧区域</div>)}
rightContainer={(<div>Header右侧区域</div>)}
pageTitle='内容区的标题'
onBackArrowClick={() => {
window.history.back()
}}
headerExtra={(<h3>测试测试</h3>)}
>
{props.children}
</VerticalLayout>
)
}
```
### 使用横向导航的页面布局
```javascript
import { HozLayout } from '@b-design/ui-layout';
import { Breadcrumb } from '@b-design/ui'
const items = [
{
key: '/home',
label: '首页',
to: '/home'
},
{
key: '/demo',
label: '例子',
items: [
{
key: '/demo/item1',
to: '/demo/item1',
label: '子节点1',
},
{
key: '/demo/item2',
to: '/demo/item2',
label: '子节点2',
}
]
}
]
const breadcrumb = (
<Breadcrumb>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Blog</Breadcrumb.Item>
<Breadcrumb.Item>Name It, and They Will Come</Breadcrumb.Item>
</Breadcrumb>
)
const Layout = (props) => {
return (
<HozLayout
breadcrumb={breadcrumb}
menus={items}
leftContainer={(<div>Header左侧区域</div>)}
rightContainer={(<div>Header右侧区域</div>)}
pageTitle='内容区的标题'
onBackArrowClick={() => {
window.history.back()
}}
>
{props.children}
</HozLayout>
)
}
```
### 使用二级导航的页面布局
``` javascript
import { BothSidesLayout } from '@b-design/ui-layout';
import { Breadcrumb } from '@b-design/ui'
const NAVS = [
{
key: '/home',
label: '首页',
to: '/home'
},
{
key: '/demo',
label: '例子',
items: [
{
key: '/demo/item1',
to: '/demo/item1',
label: '子节点1',
items: [
{
key: '/demo/item1/item',
label: '示例',
to: '/demo/item1/item'
}
]
},
{
key: '/demo/item2',
to: '/demo/item2',
label: '子节点2',
}
]
}
]
const breadcrumb = (
<Breadcrumb>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Blog</Breadcrumb.Item>
<Breadcrumb.Item>Name It, and They Will Come</Breadcrumb.Item>
</Breadcrumb>
)
const Layout = (props) => {
return (
<BothSidesLayout
menus={NAVS}
leftContainer={(<div>Header左侧区域</div>)}
rightContainer={(<div>Header右侧区域</div>)}
pageTitle='内容区的标题'
onBackArrowClick={() => {
window.history.back()
}}
breadcrumb={breadcrumb}
>
{props.children}
</BothSidesLayout>
)
}
```
## Layout 下包括以下组件:
| 组件 | 介绍 |
| :----------------: | :----------------:
| Layout.Header | 整体的Header区域 |
| Layout.Container | 页面整体的内容区域 |
| Layout.Sider | 菜单栏 |
| Layout.VerticalLayout | 固定布局中的左侧菜单布局 |
| Layout.HozLayout | 固定布局中的头部菜单布局 |
| Layout.BothSidesLayout | 固定布局中的二级菜单布局 |