TabBar 标签栏
位于 APP 底部,方便用户在不同功能模块之间进行快速切换。规则
用作 APP 的一级分类,数量控制在 3-5 个之间。
即使某个 Tab 不可用,也不要禁用或者移除该 Tab。
使用 Badge 进行提示,足不出户也能知道有内容更新。
代码演示
多用于页面的内容区块,起着控制小范围内的大块内容的分组和隐藏,起着保持界面整洁的作用。
import { TabBar, Icon } from 'antd-mobile';
class TabBarExample extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedTab: 'redTab',
hidden: false,
};
}
renderContent(pageText) {
return (
<div style={{ backgroundColor: 'white', height: '100%', textAlign: 'center' }}>
<div style={{ paddingTop: 60 }}>你已点击“{pageText}” tab, 当前展示“{pageText}”信息</div>
<a style={{ display: 'block', marginTop: 40, marginBottom: 600, color: '#108ee9' }}
onClick={(e) => {
e.preventDefault();
this.setState({
hidden: !this.state.hidden,
});
}}
>
点击切换 tab-bar 显示/隐藏
</a>
</div>
);
}
render() {
return (
<TabBar
unselectedTintColor="#949494"
tintColor="#33A3F4"
barTintColor="white"
hidden={this.state.hidden}
>
<TabBar.Item
title="生活"
key="生活"
icon={<div style={{
width: '0.44rem',
height: '0.44rem',
background: 'url(https://zos.alipayobjects.com/rmsportal/sifuoDUQdAFKAVcFGROC.svg) center center / 0.42rem 0.42rem no-repeat' }}
/>
}
selectedIcon={<div style={{
width: '0.44rem',
height: '0.44rem',
background: 'url(https://zos.alipayobjects.com/rmsportal/iSrlOTqrKddqbOmlvUfq.svg) center center / 0.42rem 0.42rem no-repeat' }}
/>
}
selected={this.state.selectedTab === 'blueTab'}
badge={1}
onPress={() => {
this.setState({
selectedTab: 'blueTab',
});
}}
data-seed="logId"
>
{this.renderContent('生活')}
</TabBar.Item>
<TabBar.Item
icon={<Icon type="koubei-o" size="md" />}
selectedIcon={<Icon type="koubei" size="md" />}
title="口碑"
key="口碑"
badge={'new'}
selected={this.state.selectedTab === 'redTab'}
onPress={() => {
this.setState({
selectedTab: 'redTab',
});
}}
data-seed="logId1"
>
{this.renderContent('口碑')}
</TabBar.Item>
<TabBar.Item
icon={
<div style={{
width: '0.44rem',
height: '0.44rem',
background: 'url(https://zos.alipayobjects.com/rmsportal/psUFoAMjkCcjqtUCNPxB.svg) center center / 0.42rem 0.42rem no-repeat' }}
/>
}
selectedIcon={
<div style={{
width: '0.44rem',
height: '0.44rem',
background: 'url(https://zos.alipayobjects.com/rmsportal/IIRLrXXrFAhXVdhMWgUI.svg) center center / 0.42rem 0.42rem no-repeat' }}
/>
}
title="朋友"
key="朋友"
dot
selected={this.state.selectedTab === 'greenTab'}
onPress={() => {
this.setState({
selectedTab: 'greenTab',
});
}}
>
{this.renderContent('朋友')}
</TabBar.Item>
<TabBar.Item
icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/asJMfBrNqpMMlVpeInPQ.svg' }}
selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/gjpzzcrPMkhfEqgbYvmN.svg' }}
title="我的"
key="我的"
selected={this.state.selectedTab === 'yellowTab'}
onPress={() => {
this.setState({
selectedTab: 'yellowTab',
});
}}
>
{this.renderContent('我的')}
</TabBar.Item>
</TabBar>
);
}
}
ReactDOM.render(<TabBarExample />, mountNode);
#tab-bar.demo {
display: flex;
flex-direction: column;
}
#tab-bar .demoName {
height: 0.8rem;
}
#tab-bar .demo-preview-item,
#tab-bar .demo-preview-item .am-tab-bar {
flex: 1;
display: flex;
flex-direction: column;
}
#tab-bar .demo-preview-item .am-tab-bar {
background-color: white;
}
API
适用平台:WEB、React-NativeTabBar
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
barTintColor | tabbar 背景色 | String | white |
tintColor | 选中的字体颜色 | String | #108ee9 |
unselectedTintColor | 未选中的字体颜色 | String | '#888' |
hidden (web only ) | 是否隐藏 | Boolean | false |
prefixCls(web only ) | 样式前缀 | String | 'am-tab-bar' |
TabBar.Item
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
badge | 徽标数 | Number \ String | 无 |
dot(Web Only ) | 是否在右上角显示小红点(在设置badge的情况下失效) | Boolean | false |
onPress | bar 点击触发,需要自己改变组件 state & selecte={true} | Function | (){} |
selected | 是否选中 | Boolean | false |
icon | 默认展示图片 | Image Source(rn) \ web 方式见 demo | |
selectedIcon | 选中后的展示图片 | Image Source(rn) \ web 方式见 demo | |
title | 标题文字 | String | |
key | 唯一标识 | String | 无 |
iconStyle | icon 样式 (rn android only )(ios 更多API请参考 tabbarios(https://facebook.github.io/react-native/docs/tabbarios.html) | String | { width: 28, height: 28 } |