10

I have 3 tabs and each tab contains a set of stack navigators.

  1. Home Stack
const HomeNavigator = createStackNavigator();

const HomeStackNavigator = ({ navigation, route }) => {
    return (
        <HomeNavigator.Navigator>
            <HomeNavigator.Screen
                name="Home"
                component={Home}
            />
            <HomeNavigator.Screen
                name="Profile"
                component={Profile}
            />
            <HomeNavigator.Screen
                name="Settings"
                component={Settings}
            />
        </HomeNavigator.Navigator>
    );
};

  1. Store Stack
const StoreNavigator = createStackNavigator();

const StoreStackNavigator = ({ navigation, route }) => {
    return (
        <StoreNavigator.Navigator>
            <StoreNavigator.Screen
                name="OurStore"
                component={Store}
            />
        </StoreNavigator.Navigator>
    );
};

  1. Community Stack
const CommunityNavigator = createStackNavigator();

const CommunityStackNavigator = ({ navigation, route }) => {
    return (
        <CommunityNavigator.Navigator>
            <CommunityNavigator.Screen
                name="Community"
                component={Community}
            />
            <CommunityNavigator.Screen
                name="CommunityReply"
                component={CommunityReply}
                options={communityReplyOptions}
            />
            <CommunityNavigator.Screen
                name="AskCommunity"
                component={AskCommunity}
            />
        </CommunityNavigator.Navigator>
    );
};

Tab Navigator

const MainNavigator = createBottomTabNavigator();

const MainTabNavigator = () => {
    return (
        <MainNavigator.Navigator
            screenOptions={tabScreenOptions}
            tabBarOptions={tabBarOptions}
        >
            <MainNavigator.Screen
                name="HomeTab"
                component={HomeStackNavigator}
                options={{ tabBarLabel: "Home" }}
            />
            <MainNavigator.Screen
                name="StoreTab"
                component={StoreStackNavigator}
                options={{ tabBarLabel: "Store" }}
            />
            <MainNavigator.Screen
                name="CommunityTab"
                component={CommunityStackNavigator}
                options={{ tabBarLabel: "Community" }}
            />
        </MainNavigator.Navigator>
    );
};

Now Home tab when a button clicked I need to navigate to CommunityReply Screen inside Community Tab Navigator. Can some please help me with this

Package versions

  • @react-navigation/bottom-tabs": "^5.8.0
  • @react-navigation/native": "^5.7.3
  • @react-navigation/stack": "^5.9.0
Kristiyan
  • 354
  • 1
  • 9
Vineel
  • 235
  • 2
  • 4
  • 10

1 Answers1

51

The below should work in this case:

navigation.navigate('CommunityTab', { screen: 'CommunityReply' });
Sourav Dey
  • 1,051
  • 1
  • 13
  • 21
  • 1
    Do you know how to do it with navigation.reset? I was doing it like this, but it didn't work. this.props.navigation.reset({ index: 0, routes: [{name: 'CommunityTab', screen: 'CommunityReply'}], }) – Yehya Jun 22 '21 at 07:26
  • 1
    try this - https://stackoverflow.com/a/63528641/7022711 – Sourav Dey Jun 24 '21 at 02:52
  • And if you need send params to screen use `navigation.navigate('CommunityTab', { screen: 'CommunityReply', params: {key: 'value'}});` – Mher Mar 20 '23 at 22:00