TabBar 标签栏

位于 app 底部,方便用户在不同功能模块之间进行快速切换。

规则

  • 用作 app 的一级分类,数量控制在 3-5 个之间。

  • 即使某个 Tab 不可用,也不要禁用或者移除该 Tab。

  • 使用 Badge 进行提示,足不出户也能知道有内容更新。

代码演示

APP型选项卡

多用于页面的内容区块,起着控制小范围内的大块内容的分组和隐藏,起着保持界面整洁的作用。

  1. import { TabBar } from 'antd-mobile';
  2. const TabBarExample = React.createClass({
  3. getInitialState() {
  4. return {
  5. selectedTab: 'redTab',
  6. notifCount: 0,
  7. presses: 0,
  8. };
  9. },
  10. renderContent(pageText, num?: number) {
  11. return (
  12. <div style={{ backgroundColor: 'white', height: '100%' }}>
  13. <div style={{ paddingTop: 30, marginLeft: 50 }}>{pageText}</div>
  14. <div style={{ margin: 50 }}>{num} re-renders of the {pageText}</div>
  15. </div>
  16. );
  17. },
  18. render() {
  19. return (
  20. <TabBar
  21. unselectedTintColor="#949494"
  22. tintColor="#33A3F4"
  23. barTintColor="white"
  24. >
  25. <TabBar.Item
  26. title="生活"
  27. key="生活"
  28. icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/XLdKiKAwDRXQNhC.png' }}
  29. selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/iKfBQdGdTMubhXy.png' }}
  30. selected={this.state.selectedTab === 'blueTab'}
  31. onPress={() => {
  32. this.setState({
  33. selectedTab: 'blueTab',
  34. });
  35. }}
  36. >
  37. {this.renderContent('生活 Tab')}
  38. </TabBar.Item>
  39. <TabBar.Item
  40. icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/UNQhIatjpNZHjVf.png' }}
  41. selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/HLkBvJOKnmOfBPO.png' }}
  42. title="口碑"
  43. key="口碑"
  44. badge={this.state.notifCount > 0 ? this.state.notifCount : undefined}
  45. selected={this.state.selectedTab === 'redTab'}
  46. onPress={() => {
  47. this.setState({
  48. selectedTab: 'redTab',
  49. notifCount: this.state.notifCount + 1,
  50. });
  51. }}
  52. >
  53. {this.renderContent('口碑 Tab', this.state.notifCount)}
  54. </TabBar.Item>
  55. <TabBar.Item
  56. icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/EljxLrJEShWZObW.png' }}
  57. selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/LWNaMdwAFSmYBFw.png' }}
  58. title="朋友"
  59. key="朋友"
  60. selected={this.state.selectedTab === 'greenTab'}
  61. onPress={() => {
  62. this.setState({
  63. selectedTab: 'greenTab',
  64. presses: this.state.presses + 1,
  65. });
  66. }}
  67. >
  68. {this.renderContent('朋友 Tab', this.state.presses)}
  69. </TabBar.Item>
  70. <TabBar.Item
  71. icon={{ uri: 'https://zos.alipayobjects.com/rmsportal/YWpPVCVOnJoCYhs.png' }}
  72. selectedIcon={{ uri: 'https://zos.alipayobjects.com/rmsportal/WadBBxOIZtDzsgP.png' }}
  73. title="我的"
  74. key="我的"
  75. selected={this.state.selectedTab === 'yellowTab'}
  76. onPress={() => {
  77. this.setState({
  78. selectedTab: 'yellowTab',
  79. });
  80. }}
  81. >
  82. {this.renderContent('我的 Tab', this.state.presses)}
  83. </TabBar.Item>
  84. </TabBar>
  85. );
  86. },
  87. });
  88. ReactDOM.render(<TabBarExample />, mountNode);
  1. .demo-preview-item,
  2. .am-tab-bar,
  3. .am-tab-bar-content,
  4. .am-tab-bar-tabpane {
  5. height: 100%;
  6. }

TabBar标签栏 - 图1

API

TabBar

参数说明类型默认值
barTintColortabbar 背景色Stringwhite
tintColor选中的字体颜色String#108ee9
unselectedTintColor未选中的字体颜色String'#888'
prefixCls(web only)样式前缀String'am-tabbar'

TabBar.Item

参数说明类型默认值
badge徽标数Number \ String
onPressbar 点击触发,需要自己改变组件 state & selecte={true}Function(){}
selected是否选中Booleanfalse
icon默认展示图片Image Source(rn) \ {uri: String} (web)
selectedIcon选中后的展示图片Image Source(rn) \ {uri: String} (web)
title标题文字String