嵌套在堆栈导航器中的React Native选项卡导航器

彼得·J

我是React Native的新手,并且在屏幕上挣扎。我浏览了嵌套的导航文档(https://reactnavigation.org/docs/nesting-navigators/),该文档帮助我设置了我拥有的初始导航设置,但是我遇到了一些问题。

我正在尝试设置该应用,以便它的初始屏幕为“选择用户”,其中没有标签导航。选择用户后,您将被重定向到另一个具有选项卡导航的屏幕。我目前可以使用它,但是在初始屏幕之后我无法访问任何路线/道具/参数。

import { useNavigation } from "@react-navigation/native";即使必须在中提供参数,我也必须手动导入导航,即使Navigation.push试图{route}在屏幕上访问也指出路线未定义。

我的屏幕设置类似于以下内容:

const Tab = createBottomTabNavigator();
const WelcomeStack = createStackNavigator();
const HomeStack = createStackNavigator();
const SettingsStack = createStackNavigator();
const Stack = createStackNavigator();

const WelcomeStackScreen = () => (
    <WelcomeStack.Navigator>
        <WelcomeStack.Screen
            name="Welcome"
            component={WelcomeScreen}
            options={{ headerShown: false }}
        />
        <WelcomeStack.Screen
            name="SignUp"
            component={SignUpScreen}
            options={{ headerShown: false }}
        />
    </WelcomeStack.Navigator>
);

const HomeStackScreen = () => {
    return (
        <HomeStack.Navigator>
            <HomeStack.Screen name="Home" component={HomeScreen} />
            <HomeStack.Screen
                name="Search"
                component={SearchResultScreen}
                options={({ navigation }) => ({
                    headerLeft: () => (
                        <Ionicons
                            name={"arrow-back"}
                            size={30}
                            color={colours.text}
                            style={{ paddingLeft: 15 }}
                            onPress={() => {
                                navigation.goBack();
                            }}
                        />
                    ),
                })}
            />
            <HomeStack.Screen
                name="Select"
                component={SelectScreen}
                options={({ navigation, route }) => ({
                    title: route.params.name,
                    headerLeft: () => (
                        <Ionicons
                            name={"arrow-back"}
                            size={30}
                            color={colours.text}
                            style={{ paddingLeft: 15 }}
                            onPress={() => {
                                navigation.goBack();
                            }}
                        />
                    ),
                })}
            />
            <HomeStack.Screen name="Read" component={ReaderScreen} />
        </HomeStack.Navigator>
    );
};

function SettingsScreen() {
    return (
        <View
            style={{ flex: 1, justifyContent: "center", alignItems: "center" }}
        >
            <Text>TBD</Text>
        </View>
    );
}

const SettingsStackScreen = () => (
    <SettingsStack.Navigator>
        <SettingsStack.Screen name="Settings" component={SettingsScreen} />
    </SettingsStack.Navigator>
);

const TabNavigator = ({ route }) => (
    <Tab.Navigator
        screenOptions={({ route }) => ({
            tabBarIcon: ({ focused, color, size }) => {
                let iconName;
                switch (route.name) {
                    case "Home":
                        iconName = focused ? "home" : "home-outline";
                        break;
                    case "Settings":
                        iconName = focused ? "list" : "list-outline";
                        break;
                    default:
                        break;
                }

                return <Ionicons name={iconName} size={size} color={color} />;
            },
        })}
        tabBarOptions={{
            activeTintColor: "tomato",
            inactiveTintColor: "gray",
        }}
    >
        <Tab.Screen name="Home" component={HomeStackScreen} />
        <Tab.Screen name="Settings" component={SettingsScreen}/>
    </Tab.Navigator>
);

export default function App() {
    return (
        <NavigationContainer theme={navThemeOverride}>
            <Stack.Navigator>
                <Stack.Screen name="Welcome" component={WelcomeStackScreen} />
                <Stack.Screen
                    name="TabNavigator"
                    component={TabNavigator}
                    options={{ headerShown: false }}
                    navigationOptions={{ gesturesEnabled: false }}
                />
            </Stack.Navigator>
        </NavigationContainer>
    );
}

以下是“欢迎”屏幕导航中的摘录

navigation.push("TabNavigator", {
    screen: "Home",
    params: {
      userId: userId,
  },
});
亨德·萨利(Hend El-Sahli)

您尝试从parent-tab-navigator导航到的主屏幕...也是一个StackNavigator ... ...Select我想您想导航到该屏幕...因此,导航需要额外的功能。 ..

   navigation.navigate('TabNavigator', {
      screen: 'Home', // <--- StackNavigator
      params: {
        screen: 'Select', // <-- nested inside HomeStack
        params: {
          title: 'Your custom title for Select screen here ...',
        },
      },
    });

加号+

有一个双重定义为route您的Tab导航仪

const TabNavigator = ({ route }) => ( //<--- here
    <Tab.Navigator
        screenOptions={({ route }) => ({ // <- and here

反而

function TabNavigator() {
  return <Tab.Navigator screenOptions={({ route }) => ({})>{/* ...Tabs... */}</Tab.Navigator>;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

嵌套选项卡导航器在抽屉导航器中不起作用

来自分类Dev

将参数从堆栈导航器传递到选项卡导航器(反应导航5)

来自分类Dev

从底部选项卡导航器导航到堆栈导航器

来自分类Dev

根据选项卡设置堆栈导航器initialRouteName

来自分类Dev

React Native-尝试在React导航中创建带有选项卡导航器的抽屉,而不渲染选项卡的Drawer项

来自分类Dev

在React Native的底部选项卡导航器中更改屏幕时如何更改图标以及文本的颜色?

来自分类Dev

React-Native-标签导航器嵌套在抽屉内

来自分类Dev

温泉UI分页:导航器和选项卡

来自分类Dev

使用 redux 中保存的数据创建选项卡导航器(react-navigator)

来自分类Dev

如何从抽屉式导航器菜单导航到特定选项卡

来自分类Dev

底部导航栏,每个选项卡均带有子导航器

来自分类Dev

React创建堆栈导航器

来自分类Dev

Redux 中的 React-native 嵌套导航器

来自分类Dev

堆栈导航器导航选项对齐问题

来自分类Dev

带选项卡导航的react-native抽屉导航

来自分类Dev

取决于屏幕的本机材质顶部选项卡导航器滑动禁用

来自分类Dev

带有底部导航器选项卡的颤振抽屉

来自分类Dev

在React Navigation 5.0中导航嵌套导航器

来自分类Dev

在反应导航中管理多个导航器(堆栈导航器和bottomtabs导航器)

来自分类Dev

React Native BottomTabs导航到特定选项卡

来自分类Dev

可触摸的不透明度在堆栈导航器屏幕中不响应-React Native

来自分类Dev

如何在 React Native 中不使用堆栈导航器重定向到页面?

来自分类Dev

无法在 react-native 中将堆栈导航器包装在 redux-provider 中

来自分类Dev

堆栈导航器堆栈视图

来自分类Dev

React Native - 无法获取已通过导航器(从堆栈导航器到抽屉导航器)传递的参数。接收:对象未定义

来自分类Dev

jQuery选项卡导航

来自分类Dev

如何在React Native v.5(不是v.4)中嵌套多个导航器

来自分类Dev

React Native 导航器的本地化

来自分类Dev

传递值堆栈导航器

Related 相关文章

  1. 1

    嵌套选项卡导航器在抽屉导航器中不起作用

  2. 2

    将参数从堆栈导航器传递到选项卡导航器(反应导航5)

  3. 3

    从底部选项卡导航器导航到堆栈导航器

  4. 4

    根据选项卡设置堆栈导航器initialRouteName

  5. 5

    React Native-尝试在React导航中创建带有选项卡导航器的抽屉,而不渲染选项卡的Drawer项

  6. 6

    在React Native的底部选项卡导航器中更改屏幕时如何更改图标以及文本的颜色?

  7. 7

    React-Native-标签导航器嵌套在抽屉内

  8. 8

    温泉UI分页:导航器和选项卡

  9. 9

    使用 redux 中保存的数据创建选项卡导航器(react-navigator)

  10. 10

    如何从抽屉式导航器菜单导航到特定选项卡

  11. 11

    底部导航栏,每个选项卡均带有子导航器

  12. 12

    React创建堆栈导航器

  13. 13

    Redux 中的 React-native 嵌套导航器

  14. 14

    堆栈导航器导航选项对齐问题

  15. 15

    带选项卡导航的react-native抽屉导航

  16. 16

    取决于屏幕的本机材质顶部选项卡导航器滑动禁用

  17. 17

    带有底部导航器选项卡的颤振抽屉

  18. 18

    在React Navigation 5.0中导航嵌套导航器

  19. 19

    在反应导航中管理多个导航器(堆栈导航器和bottomtabs导航器)

  20. 20

    React Native BottomTabs导航到特定选项卡

  21. 21

    可触摸的不透明度在堆栈导航器屏幕中不响应-React Native

  22. 22

    如何在 React Native 中不使用堆栈导航器重定向到页面?

  23. 23

    无法在 react-native 中将堆栈导航器包装在 redux-provider 中

  24. 24

    堆栈导航器堆栈视图

  25. 25

    React Native - 无法获取已通过导航器(从堆栈导航器到抽屉导航器)传递的参数。接收:对象未定义

  26. 26

    jQuery选项卡导航

  27. 27

    如何在React Native v.5(不是v.4)中嵌套多个导航器

  28. 28

    React Native 导航器的本地化

  29. 29

    传递值堆栈导航器

热门标签

归档