zarm
Version:
基于 React 的移动端UI库
202 lines (163 loc) • 5.88 kB
Markdown
# TabBar 标签栏
## 基本用法
```jsx
import { useState } from 'react';
import { Icon, TabBar, List, Button } from 'zarm';
const TabIcon = Icon.createFromIconfont(
'//lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_20337_14.627ee457cf7594fbbce6d5e14b8c29ef.js',
);
const Demo = () => {
const [activeKey, setActiveKey] = useState('home');
return (
<>
<TabBar activeKey={activeKey} onChange={setActiveKey}>
<TabBar.Item itemKey="home" title="首页" icon={<TabIcon type="home" />} />
<TabBar.Item
itemKey="found"
title="项目"
icon={<TabIcon type="menu" />}
// badge={{ shape: 'circle', text: '3' }}
/>
<TabBar.Item
itemKey="me"
title="我的"
icon={<TabIcon type="user" />}
// badge={{ shape: 'dot' }}
/>
</TabBar>
</>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## 徽标
```jsx
import { useState } from 'react';
import { Icon, TabBar, List, Button } from 'zarm';
const TabIcon = Icon.createFromIconfont(
'//lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_20337_14.627ee457cf7594fbbce6d5e14b8c29ef.js',
);
const Demo = () => {
return (
<>
<TabBar>
<TabBar.Item itemKey="home" title="首页" icon={<TabIcon type="home" />} />
<TabBar.Item
itemKey="found"
title="项目"
icon={<TabIcon type="menu" />}
badge={{ shape: 'circle', text: 3 }}
/>
<TabBar.Item
itemKey="me"
title="我的"
icon={<TabIcon type="user" />}
badge={{ shape: 'dot' }}
/>
</TabBar>
</>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## 仅图标
```jsx
import { useState } from 'react';
import { Icon, TabBar, List, Button } from 'zarm';
const TabIcon = Icon.createFromIconfont(
'//lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_20337_14.627ee457cf7594fbbce6d5e14b8c29ef.js',
);
const Demo = () => {
return (
<>
<TabBar>
<TabBar.Item itemKey="home" icon={<TabIcon type="home" />} />
<TabBar.Item itemKey="found" icon={<TabIcon type="menu" />} />
<TabBar.Item itemKey="me" icon={<TabIcon type="user" />} />
</TabBar>
</>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## 仅标题
```jsx
import { useState } from 'react';
import { Icon, TabBar, List, Button } from 'zarm';
const Demo = () => {
return (
<>
<TabBar>
<TabBar.Item itemKey="home" title="首页" />
<TabBar.Item itemKey="found" title="项目" />
<TabBar.Item itemKey="me" title="我的" />
</TabBar>
</>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## 受控模式
```jsx
import { useState } from 'react';
import { Icon, TabBar, List, Button } from 'zarm';
const TabIcon = Icon.createFromIconfont(
'//lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_20337_14.627ee457cf7594fbbce6d5e14b8c29ef.js',
);
const Demo = () => {
const [activeKey, setActiveKey] = React.useState('me');
return (
<>
<TabBar activeKey={activeKey} onChange={setActiveKey} safeArea>
<TabBar.Item itemKey="home" title="首页" icon={<TabIcon type="home" />} />
<TabBar.Item itemKey="found" title="项目" icon={<TabIcon type="menu" />} />
<TabBar.Item itemKey="me" title="我的" icon={<TabIcon type="user" />} />
</TabBar>
</>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## 开启安全区域
```jsx
import { useState } from 'react';
import { Icon, TabBar, List, Button } from 'zarm';
const TabIcon = Icon.createFromIconfont(
'//lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_20337_14.627ee457cf7594fbbce6d5e14b8c29ef.js',
);
const Demo = () => {
return (
<>
<TabBar safeArea>
<TabBar.Item itemKey="home" title="首页" icon={<TabIcon type="home" />} />
<TabBar.Item itemKey="found" title="项目" icon={<TabIcon type="menu" />} />
<TabBar.Item itemKey="me" title="我的" icon={<TabIcon type="user" />} />
</TabBar>
</>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## API
### TabBar
| 属性 | 类型 | 默认值 | 说明 |
| :--------------- | :-------------------------------- | :----- | :------------------------- |
| activeKey | number \| string | - | 当前选中项 |
| defaultActiveKey | number \| string | - | 初始选中项, 默认第一个选中 |
| onChange | (value: number \| string) => void | - | 值变化时触发的回调函数 |
### TabBar.Item
| 属性 | 类型 | 默认值 | 说明 |
| :--------- | :--------------- | :----- | :--------------------------------------------------- |
| itemKey | number \| string | - | 唯一标识,对应`activeKey`,不设置则默认取 index 索引 |
| title | ReactNode | - | 标题文字 |
| icon | ReactNode | - | 图标 |
| activeIcon | ReactNode | - | 选中时图标,不设置等同 icon 属性的值 |
| badge | BadgeProps | - | 参考 [Badge](/#/components/badge) 组件 |
## CSS 变量
| 属性 | 默认值 | 说明 |
| :------------- | :---------------------- | :----------------- |
| --background | '#fff' | 背景色 |
| --height | '50px' | 高度 |
| --color | var(--za-color-text) | 字体颜色 |
| --active-color | var(--za-theme-primary) | 选中状态下字体颜色 |
| --font-size | '12px' | 字体大小 |