React Navigation 5.x BottomTab 使用
Posted 菜鸟工程司
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Navigation 5.x BottomTab 使用相关的知识,希望对你有一定的参考价值。
底部Tab导航
基本使用
导入
import { createBottomTabNavigator } from \'@react-navigation/bottom-tabs\';
使用方式和Stack类似
const RootTab = createBottomTabNavigator();
return (
<RootTab.Navigator screenOptions={screenOptionss} tabBarOptions={tabBarOptions}>
<RootTab.Screen name="Home" component={HomeScreen} options={{ tabBarBadge: 3, title: "首页" }}
/>
<RootTab.Screen name="Settings" options={{ tabBarBadge: 3, title: "设置" }} component={Setting} />
</RootTab.Navigator>
)
- screenOptionss ,tabBarOptions 在这里可以对底部导航进行整体的一个属性控制
const screenOptionss = ({ route }) => {
return {
tabBarIcon: ({ focused, color, size }) => {
let img = require(\'./mine.png\')
//根据组件名称加载不同的图片
if (route.name == "Home") {
img = require(\'./mine.png\')
} else {
img = require(\'./message.png\')
}
//可以返回任何组件
return <Image source={img}
style={[style.icon, { tintColor: color }]} />
},
}
}
//文本选中和非选中颜色 不会影响icon
const tabBarOptions = {
activeTintColor: \'tomato\',
inactiveTintColor: \'gray\',
}
内嵌StackNavigator
一般tab都和stack结合使用,大多数从tab页跳转到其他页面需要隐藏tab底部栏,官方推荐tab嵌入到stack中
return (
<NavigationContainer>
{
<Stack.Navigator screenOptions={{headerShown:true}}>
<Stack.Screen name="Tab" component={HomeTab} options={{title:"首页"}} />
<Stack.Screen name="List" component={ListScreen} />
<Stack.Screen name="Profile" component={ProfileScreen} />
</Stack.Navigator>
</NavigationContainer>
)
HomeTab
function HomeTab(params) {
const RootTab = createBottomTabNavigator();
//....
return (
<RootTab.Navigator screenOptions={screenOptionss} tabBarOptions={tabBarOptions}>
<RootTab.Screen name="Home" component={HomeScreen} options={{ tabBarBadge: 3, title: "首页" }}
/>
<RootTab.Screen name="Settings" options={{ tabBarBadge: 3, title: "设置" }} component={Setting} />
</RootTab.Navigator>
)
}
这样在HomeTab内嵌入stack中,所以在切换页面的时候还需要处理下导航栏(各个Tab页面共用的一个导航栏)
如下监听点击tab事件 改变标题 (这里使用dangerouslyGetParent()来获取stack的navigation)
class Setting extends Component {
//...
componentDidMount() {
//监听点击tab事件 改变标题
this.unsubscribe = this.props.navigation.addListener(\'tabPress\', e => {
// Prevent default action
this.props.navigation.dangerouslyGetParent().setOptions({title:"设置"})
});
}
componentWillUnmount(){
this.unsubscribe ();
}
//...
}
以上是关于React Navigation 5.x BottomTab 使用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 React Navigation 5.x 在不同的选项卡中重置堆栈
react-navigation子组件数据到父组件函数[react-navigation 6]
React Navigation 与 React Native Navigation [关闭]
我需要下载 react-navigation 并使用命令 npm i @react-navigation/native 并显示错误