TabBar 标签栏
位于 app 底部,方便用户在不同功能模块之间进行快速切换。规则
用作 app 的一级分类,数量控制在 3-5 个之间。
即使某个 Tab 不可用,也不要禁用或者移除该 Tab。
使用 Badge 进行提示,足不出户也能知道有内容更新。
代码演示
多用于页面的内容区块,起着控制小范围内的大块内容的分组和隐藏,起着保持界面整洁的作用。
import { TabBar } from 'antd-mobile';
const TabBarExample = React.createClass({
getInitialState() {
return {
selectedTab: 'redTab',
notifCount: 0,
presses: 0,
};
},
renderContent(pageText, num?: number) {
return (
<div style={{ backgroundColor: 'white', height: '100%' }}>
<div style={{ paddingTop: 30, marginLeft: 50 }}>{pageText}</div>
<div style={{ margin: 50 }}>{num} re-renders of the {pageText}</div>
</div>
);
},
render() {
return (
<TabBar
unselectedTintColor="#949494"
tintColor="#33A3F4"
barTintColor="white"
>
<TabBar.Item
title="生活"
key="生活"
icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/XLdKiKAwDRXQNhC.png' }}
selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/iKfBQdGdTMubhXy.png' }}
selected={this.state.selectedTab === 'blueTab'}
onPress={() => {
this.setState({
selectedTab: 'blueTab',
});
}}
>
{this.renderContent('生活 Tab')}
</TabBar.Item>
<TabBar.Item
icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/UNQhIatjpNZHjVf.png' }}
selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/HLkBvJOKnmOfBPO.png' }}
title="口碑"
key="口碑"
badge={this.state.notifCount > 0 ? this.state.notifCount : undefined}
selected={this.state.selectedTab === 'redTab'}
onPress={() => {
this.setState({
selectedTab: 'redTab',
notifCount: this.state.notifCount + 1,
});
}}
>
{this.renderContent('口碑 Tab', this.state.notifCount)}
</TabBar.Item>
<TabBar.Item
icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/EljxLrJEShWZObW.png' }}
selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/LWNaMdwAFSmYBFw.png' }}
title="朋友"
key="朋友"
selected={this.state.selectedTab === 'greenTab'}
onPress={() => {
this.setState({
selectedTab: 'greenTab',
presses: this.state.presses + 1,
});
}}
>
{this.renderContent('朋友 Tab', this.state.presses)}
</TabBar.Item>
<TabBar.Item
icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/YWpPVCVOnJoCYhs.png' }}
selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/WadBBxOIZtDzsgP.png' }}
title="我的"
key="我的"
selected={this.state.selectedTab === 'yellowTab'}
onPress={() => {
this.setState({
selectedTab: 'yellowTab',
});
}}
>
{this.renderContent('我的 Tab', this.state.presses)}
</TabBar.Item>
</TabBar>
);
},
});
ReactDOM.render(<TabBarExample />, mountNode);
.demo-preview-item,
.am-tab-bar,
.am-tab-bar-content,
.am-tab-bar-tabpane {
height: 100%;
}
API
TabBar
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
barTintColor | tabbar 背景色 | String | white |
tintColor | 选中的字体颜色 | String | #108ee9 |
unselectedTintColor | 未选中的字体颜色 | String | '#888' |
prefixCls(web only ) | 样式前缀 | String | 'am-tabbar' |
TabBar.Item
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
badge | 徽标数 | Number \ String | 无 |
onPress | bar 点击触发,需要自己改变组件 state & selecte={true} | Function | (){} |
selected | 是否选中 | Boolean | false |
icon | 默认展示图片 | Image Source(rn) \ {uri: String} (web) | |
selectedIcon | 选中后的展示图片 | Image Source(rn) \ {uri: String} (web) | |
title | 标题文字 | String |