RN笔记-TabNavigator隐藏Tabbar
rn页面之间跳转时默认一直显示tabbar,然而在开发过程中必须要切换tabbar的显示和隐藏。在尝试过很多次之后终于找到了解决办法。解决的思路是,动态改变tabbar的高度。定义tabbar的显示高度
tabBarHeight
getInitialState() {
return {
selectedTab:'classCircle',
tabBarHeight: 49
}
},handleTabBar(state){
this.setState({
tabBarHeight: state ? 49 : 0
});
},
设置TabNavigator 的
tabBarStyle
样式,并在initialRoute 中定义tabar的 hide
和show
属性。以班级圈
模块为例。render() {
return (
{ /*资源*/ }
}
renderSelectedIcon={() => }
onPress={() => {this.setState({ selectedTab: 'resource' })}}
selected={this.state.selectedTab === 'resource'}
>
{
return Navigator.SceneConfigs.PushFromRight;
}}
renderScene={(route,navigator)=>{
let Component = route.component;
return ;
}}
/>
{ /*消息*/ }
}
renderSelectedIcon={() => }
onPress={() => {this.setState({ selectedTab: 'contact' })}}
selected={this.state.selectedTab === 'contact'}
>
{
return Navigator.SceneConfigs.PushFromRight;
}}
renderScene={(route,navigator)=>{
let Component = route.component;
return ;
}}
/>
{ /*班级圈*/ }
}
renderSelectedIcon={() => }
onPress={() => {this.setState({ selectedTab: 'classCircle' })}}
selected={this.state.selectedTab === 'classCircle'}>
this.handleTabBar(false),
show: () => this.handleTabBar(true)
}
}
}}
configureScene={(route,navigator)=>{
return Navigator.SceneConfigs.PushFromRight;
}}
renderScene={(route,navigator)=>{
let Component = route.component;
return ;
}}
/>
{ /*应用*/ }
}
renderSelectedIcon={() => }
onPress={() => {this.setState({ selectedTab: 'appCenter' })}}
selected={this.state.selectedTab === 'appCenter'}
>
{
return Navigator.SceneConfigs.PushFromRight;
}}
renderScene={(route,navigator)=>{
let Component = route.component;
return ;
}}
/>
{ /*我的*/ }
}
renderSelectedIcon={() => }
onPress={() => {this.setState({ selectedTab: 'mine' })}}
selected={this.state.selectedTab === 'mine'}
>
this.handleTabBar(false),
show: () => this.handleTabBar(true)
}
}
}}
configureScene={(route,navigator)=>{
return Navigator.SceneConfigs.PushFromRight;
}}
renderScene={(route,navigator)=>{
let Component = route.component;
return ;
}}
/>
);
}
至此Tabbar的隐藏和显示属性已经定义完毕,接下来就要在push页面时做如下操作。
pushToDetail(url){
if (url == 'Consult') {
this.props.navigator.push(
{
component:Consult,//要跳转的版块
passProps:{
'url':url,
tabBar: {
hide: () => this.props.tabBar.hide(),
show: () => this.props.tabBar.show()
}
}
}
);
}
},
需要了解Component组件的生命周期,
componentWillMount
方法是在组件将要被渲染时调用,componentWillUnmount
方法是在组件将要被销毁时调用。// 渲染组件时隐藏tabbar
componentWillMount(){
this.props.tabBar.hide();
},// 销毁组件时显示tabbar
componentWillUnmount(){
this.props.tabBar.show();
},
【RN笔记-TabNavigator隐藏Tabbar】附效果图:
文章图片
1.gif
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- Android中的AES加密-下
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 【读书笔记】贝叶斯原理
- 【韩语学习】(韩语随堂笔记整理)
- 人性的弱点-笔记
- 读书笔记:博登海默法理学|读书笔记:博登海默法理学 —— 正义的探索(1)
- D034+3组苏曼+《写作这回事》读书笔记
- 《自我的追寻》读书笔记3
- 最有效的时间管理工具(赢效率手册和总结笔记)