随笔 - 24,  文章 - 0,  评论 - 1,  阅读 - 16511

创建navigation文件夹,创建bottomTab.tsx文件

复制代码
 1 import React from 'react'
 2 import { RouteProp, TabNavigationState } from '@react-navigation/native';
 3 import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
 4 import Home from '@/pages/home'
 5 import Listen from '@/pages/listen'
 6 import Found from '@/pages/found'
 7 import Account from '@/pages/account'
 8 import { stackParamsList } from '@/navigator/createStackNavigation'
 9 import { StackNavigationProp } from '@react-navigation/stack';
10 import { navigationProp } from '@/navigator/createStackNavigation'
11 type bottomParamsList = {
12     Home: undefined;
13     Listen: undefined;
14     Found: undefined;
15     Account: undefined;
16 }
17 // type navigationProp=StackNavigationProp<bottomParamsList>
18 const Tab = createBottomTabNavigator<bottomParamsList>();
19 type Route = RouteProp<stackParamsList, 'BottomTab'> & {
20     state?: TabNavigationState;
21 }
22 interface Iprops {
23     route: Route,
24     navigation: navigationProp
25 }
26 function getHeaderTitle(route: Route) {
27     const routeName = route.state ? route.state.routes[route.state.index].name : route.params?.screen || 'Home'
28     switch (routeName) {
29         case 'Home':
30             return '首页';
31         case 'Listen':
32             return '我听';
33         case 'Found':
34             return '发现';
35         case 'Account':
36             return '账户';
37         default:
38             return '首页'
39     }
40 }
41 class BottomTab extends React.Component<Iprops>{
42 
43     componentDidUpdate() {
44         const { route, navigation } = this.props
45         console.log(route)
46         navigation.setOptions({
47             headerTitle: getHeaderTitle(route)
48         })
49     }
50     render() {
51         return (
52             <Tab.Navigator
53                 tabBarOptions={{
54                     activeTintColor:'orange'
55                 }}
56                 >
57                 <Tab.Screen
58                     name="Home"
59                     component={Home}
60                     options={{
61                         tabBarLabel: '首页'
62                     }} />
63                 <Tab.Screen
64                     name="Listen"
65                     component={Listen}
66                     options={{
67                         tabBarLabel: '我听'
68                     }} />
69                 <Tab.Screen
70                     name="Found"
71                     component={Found}
72                     options={{
73                         tabBarLabel: '发现'
74                     }} />
75                 <Tab.Screen
76                     name="Account"
77                     component={Account}
78                     options={{
79                         tabBarLabel: "账户"
80                     }} />
81             </Tab.Navigator>
82         )
83     }
84 }
85 export default BottomTab
复制代码

index.tsx

复制代码
 1 import React from 'react'
 2 import { NavigationContainer } from '@react-navigation/native';
 3 import { createStackNavigator,StackNavigationProp, CardStyleInterpolators } from '@react-navigation/stack';
 4 import Detail from '@/pages/detail'
 5 import { StyleSheet ,Platform} from 'react-native';
 6 import BottomTab from '@/navigator/bottomTab'
 7 export type stackParamsList={
 8     BottomTab:{
 9         screen?:string
10     };
11     Detail:{
12         id:number
13     };
14 }
15 export type navigationProp=StackNavigationProp<stackParamsList>
16 const Stack=createStackNavigator<stackParamsList>()
17 function CreateStack(){
18     return (
19         <NavigationContainer>
20             <Stack.Navigator
21                 screenOptions={{
22                     headerTitleAlign:'center',
23                     cardStyleInterpolator:CardStyleInterpolators.forHorizontalIOS,
24                     gestureEnabled:true,
25                     gestureDirection:"horizontal",
26                     headerStyle:{
27                         ...Platform.select({
28                             android:{
29                                 elevation:0,
30                                 borderBottom:StyleSheet.hairlineWidth
31                             }
32                         })
33                     }
34                 }}
35             >
36                 <Stack.Screen name="BottomTab" options={{
37                     headerTitle:'首页'
38                 }} component={BottomTab}/>
39                 <Stack.Screen name="Detail" component={Detail}/>
40             </Stack.Navigator>
41         </NavigationContainer>
42     )
43 }
44 export default CreateStack
复制代码

 

posted on   小白学前端  阅读(364)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示