typescript - React Navigation 5 - 嵌套导航无法导航
问题描述
我有一个带有两个嵌套堆栈导航器的底部选项卡导航器,如下所示:
import React from "react";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import { createStackNavigator } from "@react-navigation/stack";
import { NavigatorScreenParams } from "@react-navigation/native";
type BottomTabParams = {
ScreenA: undefined;
ScreenB: NavigatorScreenParams<StackBParams>;
};
const BottomTab = createBottomTabNavigator<BottomTabParams>();
const BottomTabNavigator = () => {
return (
<BottomTab.Navigator initialRouteName="ScreenA">
<BottomTab.Screen name="ScreenA" component={StackANavigator} />
<BottomTab.Screen name="ScreenB" component={StackBNavigator} />
</BottomTab.Navigator>
);
};
export type StackAParams = {
ScreenA: NavigatorScreenParams<BottomTabParams>;
ScreenADetails: IADetailsData;
};
const StackA = createStackNavigator<StackAParams>();
const StackANavigator = () => {
return (
<StackA.Navigator screenOptions={{ headerShown: false }}>
<StackA.Screen name="ScreenA" component={AScreen} />
<StackA.Screen name="ScreenADetails" component={ADetailsScreen} />
</StackA.Navigator>
);
};
export type StackBParams = {
ScreenB: undefined;
ScreenBDetails: IBDetailsData;
};
const StackB = createStackNavigator<StackBParams>();
const StackBNavigator = () => {
return (
<StackB.Navigator screenOptions={{ headerShown: false }}>
<StackB.Screen name="ScreenB" component={BScreen} />
<StackB.Screen name="ScreenBDetails" component={BDetailsScreen} />
</StackB.Navigator>
);
};
export default BottomTabNavigator;
现在,ADetailsScreen
我想导航到BDetailsScreen
,如下所示:
const ADetailsScreen: FunctionComponent<StackScreenProps<StackAParams, "ScreenADetails">> = ({
navigation,
route,
}) => {
const onPress = () => {
navigation.navigate("ScreenA", {
screen: "ScreenB",
params: {
screen: "ScreenBDetails",
params: detailsData
}
});
}
return (...);
}
但是,这不起作用,我只是导航到ScreenA
. 我究竟做错了什么?
更新:
我的底部标签导航也在堆栈导航器中:
const Stack = createStackNavigator<RootStackParams>();
const RootNavigator = () => {
return (
<Stack.Navigator screenOptions={{ headerShown: false }}>
<Stack.Screen name="Root" component={BottomTabNavigator} />
<Stack.Screen name="NotFound" component={NotFoundScreen} options={{ title: "Oops!" }} />
</Stack.Navigator>
);
};
但是,以下内容也不起作用:
navigation.navigate("ScreenA", {
screen: "Root",
params: {
screen: "ScreenB",
params: {
screen: "ScreenBDetails",
params: detailsData
}
}
});
解决方案
推荐阅读
- sql - 在 Oracle SQL 中根据顺序分离结果
- python - 基于二进制掩码opencv改变像素颜色
- git - 编译多个版本的 C 程序进行测试
- pagespeed - 诊断性能问题 - 失败
- javascript - 从本地存储解析后显示对象数组
- html - 我放置了两个带有文本的 div,然后一个带有照片,最后一个带有更多文本。但似乎照片所占据的位置被忽略了?
- bash - Is there a way to escape $ and single quotes together in bash?
- javascript - 谷歌表脚本问题
- java - HttpServletResponse.getWriter() 抛出 IOException 怎么办?
- django - NGINX USWGI 和 Django 应用程序的 502 错误网关